如何将带有对象的准备语句 sql 字符串转换为精确的 sql 字符串?

How to convert the prepare statement sql string with an Object to the exact sql string?

我正在使用 spring。我有很多更新步骤,有没有办法为此使用 batchUpdate

原创

jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object[] {name, id});  
jdbcTemplate.update("UPDATE USER2 SET name = ? WHERE user_id = ?", new Object[] {name, id2});  
jdbcTemplate.update("UPDATE USER3 SET name = ? WHERE user_id = ?", new Object[] {name, id3});  

如何使用batchUpdate

getJdbcTemplate().batchUpdate(sql);

因为batchUpdate的参数是Array[]。如何将带有对象的准备语句 SQL 字符串转换为精确的 SQL 字符串?

int\[\] batchUpdate(String... sql) 是错误的工作方法。 它适用于你有一堆不带参数的不同 SQL 语句的情况,你想一次性执行这些语句。

您需要使用其他 batchUpdate 方法之一。

如果不需要控制batch size public int[] batchUpdate(String sql, List<Object[]> batchArgs) 应该工作正常。调用将如下所示:

jdbcTemplate.update(
    "UPDATE USER SET name = ? WHERE user_id = ?", 
    Arrays.asList(
        new Object[] {name, id},
        new Object[] {name, id2}, 
        new Object[] {name, id3}
    )
); 

另请查看允许提供批量大小、参数类型或参数设置器的其他变体,这些变体允许单独为批量的每个部分设置参数。

See also this example.