具有可变长度 IN 子句的 JDBC 更新 [重复]
Posted
技术标签:
【中文标题】具有可变长度 IN 子句的 JDBC 更新 [重复]【英文标题】:JDBC update with variable length IN clause [duplicate] 【发布时间】:2019-01-10 00:20:57 【问题描述】:所以我有一个查询需要像UPDATE entity WHERE id IN (:ids)
一样运行。我知道在做SELECT
时我可以做类似的事情
val sql = "SELECT * FROM entity WHERE id IN (:ids)";
jdbcTemplate.queryForList(sql, Collections.singletonMap("ids", ids));
有什么方法可以为“更新”查询完成此操作,我不必将我的 id 列表转换为逗号分隔的字符串并调用它
val params = ids.joinToString(",")
jdbcTemplate.update(sql, mapOf(Pair("ids", params)))
编辑:结果我列出的第二种方式甚至不起作用,因为它需要一个 Double 并得到一个字符串
【问题讨论】:
【参考方案1】:在 Java 中,您可以这样做:
String joinedIds = Arrays.stream(tradeListIds).collect(Collectors.joining(", "));
【讨论】:
嘿,知道这很有用。谢谢。实际上并没有解决我的问题,因为它期望双倍因为数据库条目是INT(11)
。我正在使用 Kotlin 并更新了我上面的示例(即使它不起作用)以更 kotlin 的方式进行。以上是关于具有可变长度 IN 子句的 JDBC 更新 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 JDBC 参数化 IN 子句的最佳方法是啥? [复制]