我有一个遗留代码,不允许我使用准备好的语句。 它使用 Spring JDBC 和更新查询。要求是更新 100,000 行。 我有一个 map ,其中包含行号和需要在特定列中更新的值。
这是我当前的代码:
for(String seq: recordIdMap.keySet()){
Object[] parameters = new Object[2];
parameters[0] = seq;
parameters[1] = recordIdMap.get(seq);
//<setting the params in query using manual string replace- earlier query has (1) (2) ... in query . This is not prepared statement>
getJdbcTemplate().update(query);
}
我需要将其更改为批量执行,以便在 for 循环之后我可以在单个数据库命中中执行它。
使用 Spring JDBC 批量更新来满足此需求的最佳方法是什么?
最佳答案
我会读取所有内容并将其转换为对象数组列表,然后运行batchUpdate。
List<Object[]> params = new ArrayList<Object[]>();
for(Entry<String,String> entry : recordIdMap.entrySet())
params.add(new Object[] {entry.getKey(), entry.getValue()});
getJdbcTemplate().batchUpdate(query, params);
希望有帮助
关于java - Spring JDBC批量更新查询,无需准备语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36109955/