![](/img/trans.png)
[英]Issue with jdbcTemplate.batchUpdate() for large list of queries
[英]jdbcTemplate.batchUpdate() with smaller list than getBatchSize() throws IndexOutOfBoundsException error
我正在使用 1000 個塊調用jdbcTemplate.batchUpdate()
。該列表可以是任意大的——有時它可能小於 1000,在這種情況下只有一小批。 我的假設是jdbcTemplate.batchUpdate
足夠聰明, jdbcTemplate.batchUpdate
要執行多少批次。
但我看到以下內容:假設我的列表有 3 個項目:
final List<UsersT> batchInsertUsers = ...; // 3 items in List
String sqlInsert = "INSERT INTO USERS_T ...";
jdbcTemplate.batchUpdate(sqlInsert, new BatchPreparedStatementSetter() {
@Override
public int getBatchSize() {
return 1000; // Max Batch size greater than current list. 1 batch expected
}
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, batchInsertUsers.get(i).getId());
ps.setString(2, batchInsertUsers.get(i).getPassword());
// etc.
}
}
錯誤:
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)
at app.ResearcherServiceImpl$1.setValues(ResearcherServiceImpl.java:535)
int getBatchSize()
返回批次的大小。
使用這個實現:
@Override
public int getBatchSize() {
return batchInsertUsers.size(); // Return the size of the batch.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.