为什么我的代码两次导入最后一行?每行从零到x都是可以的,然后再将最后一行添加一次。
@Override
public void batchUpt2(User_FK users) {
long startTime = System.nanoTime();
jdbcTemplate.update("INSERT INTO INS_RAZNO.BULK_TEST VALUES (?, ?, ?)", new PreparedStatementSetter() {
public void setValues(PreparedStatement ps) throws SQLException {
int x;
int size = users.getUser().size();
for(x = 0; x < size; ++x) {
ps.setInt(1, x + 1);
ps.setLong(2, users.getUser().get(x));
ps.setInt(3, users.getSys());
ps.addBatch();
}ps.executeBatch();
}
});
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1000000;
System.out.println("-------------"+duration+"-----------------forEach");
}
我在参数中有这个“用户”:[1,2,3,4,5,6]但有7个插入。结果在第1,2,3,4,5,6,6行
答案 0 :(得分:0)
也许最后一个用户在源列表中被添加了两次。您可以通过在setValues()中打印源列表的大小来检查吗?
答案 1 :(得分:0)
这是我正在使用的最终解决方案。
@Override
public void batchUpt2(User_FK users) {
long startTime = System.nanoTime();
for(int i = 0; i < users.getUser().size(); i++) {
jdbcTemplate.update("INSERT INTO INS_RAZNO.BULK_TEST VALUES (?, ?, ?)", new Object[] {
i+1, users.getUser().get(i), 1
});
}
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1000000;
System.out.println("-------------"+duration+"-----------------forEach");
}