Как я могу написать это, не используя BatchUpdate и batchPreparedStatementSetter? Просто с помощью queryObject или что-то в этом роде?
@Override
public void batchUpt2(User_FK users) {
long startTime = System.nanoTime();
jdbcTemplate.batchUpdate("INSERT INTO INS_RAZNO.BULK_TEST VALUES (?, ?, ?)", new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, i + 1);
ps.setLong(2, users.getUser().get(i));
ps.setInt(3, users.getSys());
}
@Override
public int getBatchSize() {
return users.getUser().size();
}
});
long endTime = System.nanoTime();
long duration = (endTime - startTime);
System.out.println("-------------"+duration+"-----------------");
}
Для цикла и PreparedStatementSetter
У меня есть задание сделать по-другому. :)
Я решил вот это, если кто хочет посмотреть ...
@Override
public void batchUpt2(User_FK users) {
long startTime = System.nanoTime();
jdbcTemplate.update("INSERT INTO INS_RAZNO.BULK_TEST VALUES (?, ?, ?)", new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
int x;
for(x = 0; x < users.getUser().size(); ++x) {
ps.setInt(1, x);
ps.setLong(2, users.getUser().get(x));
ps.setInt(3, users.getSys());
}
}
});
long endTime = System.nanoTime();
long duration = (endTime - startTime) / 1000000;
System.out.println("-------------"+duration+"-----------------forEach");
}
пакетная обработка, вероятно, является наиболее эффективным способом вставки списка строк в базу данных. Почему ты не хочешь его использовать?