我正在尝试使用vertxjava在mssql数据库中进行大容量插入,由于某些原因,在表中插入的顺序与在列表中排列数据的顺序不同。对于我的业务逻辑来说,在数据库中有这个顺序是非常重要的。在控制台中,它正确地显示了顺序,但是当我在数据库中查看它时,顺序是完全混淆的。
public void insertChildUid(SortedSet<String> goodReadSet, Integer serialID) {
LOG.debug(" serialID "+serialID);
List<JsonArray> batch = new ArrayList<JsonArray>();
int childSetSize = goodReadSet.size();
LOG.debug(" childSetSize "+childSetSize);
String[] goodReadArray = new String[childSetSize];
goodReadArray = goodReadSet.toArray(goodReadArray);
for (int i=0; i < childSetSize; i++) {
String[] puidAndUid = new String[1];
puidAndUid = goodReadArray[i].split(":");
String puid = puidAndUid[0];
String uid = puidAndUid[1];
batch.add(new JsonArray().add(uid).add(puid).add(serialID));
}
String sql = "INSERT INTO serial"
+ " (uid, fnc, serialorderid)"
+ " VALUES(?, ?, ?) ";
LOG.debug("SQL QUERY :"+formatQuery(sql, batch));
dbClient.getConnection(conn->{
if(conn.failed()){
LOG.error("Can't get Vertx connection",conn.cause());
} else{
LOG.debug(" Vertx connected for BATCH INSERT!!!!!!!!!");
final SQLConnection connection = conn.result();
connection.batchWithParams(sql,batch,(AsyncResult<List<Integer>> res) -> {
if (res.succeeded()) {
List<Integer> result = res.result();
LOG.debug("result : "+result.size());
//LOG.debug("BATCH INSERT COMPLETE!!!!!!!!!");
LOG.debug(" BATCH INSERT COMPLETE FOR PUID!!!!!!!!! "+batch.get(0).getString(1));
} else {
// Failed!
LOG.debug("Failed! : "+res.cause());
}
});
connection.close();
}
});
}
下面是我的控制台输出
11:41:04.569[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-childsetsize 10
11:41:04.570[vert.x-eventloop-thread-1]debug tntmanual.server.dao.serialorderdao-sql查询:插入串行(uid,fnc,serialorderid)值([[“1198000533980079304”,“11980180231000164186”,72],[“11980013237900080767”,“11980180231000164186”,72],[“11980018018100688258”,“11980180231000164186”,72],[“11980018208300933667”,"11980180231000164186",72], ["11980018213800239089","11980180231000164186",72], ["11980018531200237597","11980180231000164186",72], ["11980023406000938288","11980180231000164186",72], ["11980027390300806466","11980180231000164186",72], ["11980028239900198090","11980180231000164186",72], ["11980028320100716616","11980180231000164186",72]], {1}, {2})
$$$$$$$$ 11980183084300807471 $$$$$$$$$$$
11:41:04.571[vert.x-eventloop-thread-1]调试tntmanual.server.dao.orderdao-arraysize 5
11:41:04.572[vert.x-eventloop-thread-1]调试tntmanual.server.dao.orderdao-arraysize+childcounter 1510迭代集合:5 constr serialorderdao!!
11:41:04.572[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-serialid 72
11:41:04.572[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-childsetsize 5
11:41:04.572[vert.x-eventloop-thread-1]debug tntmanual.server.dao.serialorderdao-sql查询:插入序列(uid,fnc,serialorderid)值([[“11980053655800913678”,“11980183084300807471”,72],“1198008027370614629”,“11980183084300807471”,72],“1198008202860001574”,“11980183084300807471”,72],“1198008222200979”,"11980183084300807471",72], ["11980088238100084516","11980183084300807471",72]], {1}, {2})
11:41:04.572[vert.x-eventloop-thread-1]debug tntmanual.server.dao.orderdao-创建序列并保存在数据库中
11:41:04.573[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-vertx已连接以进行批量插入!!!!!!!!!
11:41:04.576[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-vertx已连接以进行批量插入!!!!!!!!!
11:41:04.585[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-结果:5
11:41:04.585[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-完成puid的批插入!!!!!!!!!11980183084300807471
11:41:04.585[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-结果:10
11:41:04.585[vert.x-eventloop-thread-1]调试tntmanual.server.dao.serialorderdao-完成puid的批插入!!!!!!!!!11980180231000164186*
[![数据库中的表输出][1]][1][1]:https://i.stack.imgur.com/yj49u.gif
暂无答案!
目前还没有任何答案,快来回答吧!