0

我正在使用骆驼 2.17.0 并且必须使用 SQL IN 子句执行更新查询。查询是

update MY_TABLE set STATUS = :#status where ID in (:#in:ids) AND TYPE = :#type

我已将所有参数设置为驼峰头,参数ids是 List<Long> 并且在执行期间列表中有四个元素。但我得到一个 sql 异常

PreparedStatementCallback; uncategorized SQLException for SQL []; SQL state [null]; error code [0]; Number of parameters mismatch. 
Expected: 6, was: 4; nested exception is java.sql.SQLException: Number of parameters mismatch. Expected: 6, was: 4

我不确定出了什么问题。当我对除参数列表 ID 之外的所有值进行硬编码时,我能够更新表而不会出现任何错误。修改后的查询就像

update MY_TABLE set  STATUS = 'SUCCESS' where ID in (:#in:corrIds) AND TYPE = 'type'

是否有任何规定,当我们使用 IN 子句时,我们不能在查询中提供任何其他参数?请指教。

4

1 回答 1

0

对于 in 子句,您需要在 2.18 上更新。但是,通过使用 2.17,只需制作逗号分隔的字符串并将其放在交换标头中。它将被自动映射。

请注意使用此技术的任何 SQL 注入。

于 2017-10-23T08:59:29.353 回答