我有遗留代码,我不允许使用预准备语句。 它使用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批量更新的最佳方法是什么?
答案 0 :(得分:1)
我会读取所有内容并将其转换为对象数组列表,然后运行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);
希望有所帮助