没有预处理语句的Spring JDBC批量更新查询

时间:2016-03-20 03:33:14

标签: java sql spring performance jdbc

我有遗留代码,我不允许使用预准备语句。 它使用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批量更新的最佳方法是什么?

1 个答案:

答案 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);

希望有所帮助