java - Spring JDBC批量更新查询,无需准备语句

标签 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 批量更新来满足此需求的最佳方法是什么?

最佳答案

我会读取所有内容并将其转换为对象数组列表,然后运行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/

相关文章:

java - spring中如何过滤jms消息

java - java.io.File.createNewFile() 处的 IOException;

sql - 使用不同列的不同可选值更新多行

mysql - 将多个不同的sql合并为一个

sql - 测试 MySQL 表中是否存在行的最佳方法

java - hibernate不创建sessionFactory bean

java - 如何将特殊的 jsp scriptlet 更改为 jSTL?

java - 如何将 GitHub 项目提交到 Maven Central?

java - 供客户使用的单独模块

java - 如何使用 JoinColumnn 选择少量数据进行显示