java - 如何将带有对象的prepare语句sql字符串转换为确切的sql字符串?
问题描述
我正在使用弹簧。我有很多更新步骤,有没有办法使用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});
如何使用批处理更新
getJdbcTemplate().batchUpdate(sql);
因为 for 的参数batchUpdate
是Array[]
。如何将带有对象的准备语句 SQL 字符串转换为确切的 SQL 字符串?
解决方案
int\[\] batchUpdate(String... sql)
是错误的工作方法。它适用于您有一堆不带参数的不同 SQL 语句的情况,您希望一次性执行这些语句。
您需要使用其他batchUpdate
方法之一。
如果您不需要控制批量大小
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}
)
);
还可以查看允许提供批量大小、参数类型或参数设置器的其他变体,它们允许单独为批量的每个部分设置参数。
推荐阅读
- c - Microchip dsPIC33FJ256GP710A 来自通过 UART 进行通信的示例代码
- python - 文本分析,R 中的 DocumentTermMatrix 翻译成 Python
- ios - Xcode 配置文件突然停止工作
- javascript - 按下按钮时使屏幕向下滚动约 2 厘米
- python - “系列”对象没有属性“iplot”
- ansible - 本地库存的 Ansible AWX 自定义脚本不起作用
- c# - “使用 SQLite;” 变灰
- json - Python:从列表而不是字典的 API 调用中打印某些项目
- vue.js - Vue+Vuex+Axios API 调用处理多个更新
- google-sheets - 如何在 Google 表格的数据透视表中使用 VLOOKUP 作为计算字段?