JdbcTemplate 批量向多条语句发送参数
Posted
技术标签:
【中文标题】JdbcTemplate 批量向多条语句发送参数【英文标题】:JdbcTemplate send parameters to multiple statements in one batch 【发布时间】:2017-09-29 15:55:30 【问题描述】:我有如下声明:
String query = "DELETE FROM myTable WHERE id=? AND otherField=?; DELETE FROM myOtherTable WHERE idOther=? AND anotherField=?;";
将作为一个查询(一个接一个)执行。所以,我有如下内容:
JdbcTemplate template;
template.update(query, new Object[] 1, "otherValue", 3, "anotherValue" );
失败并出现以下错误:
org.postgresql.util.PSQLException:列索引超出范围: 3、列数:2。
我认为这里的问题是,查询由分号分隔,并且将为每个查询应用参数,并且无论分号如何,它都会尝试应用参数。所以,我有 4 个参数,但第一个查询只收到 2 个(虽然两个查询的总和是 4)。
有没有办法让我将参数传递给查询? 我不能使用命名模板。
【问题讨论】:
投反对票的人能解释一下为什么投反对票吗? 为什么两个 DELETE 语句必须在同一个 Java 字符串中? 你不能一次执行多个语句。 【参考方案1】:我最终自己进行了替换,然后执行了查询。
【讨论】:
以上是关于JdbcTemplate 批量向多条语句发送参数的主要内容,如果未能解决你的问题,请参考以下文章
Spring5学习笔记(13) — “JdbcTemplate 操作数据库(批量增删改)”
使用 jdbcTemplate.batchUpdate 混淆批量插入
mybatis批量更新不同参数多条语句带分号update报错的解决方案