小编典典

如何通过Spring JdbcTemplate生成动态的“(...)” SQL列表?

spring

是否可以通过Jdbc模板在SQL查询中生成任意“ in()”列表:

例:

“从t中选择*,其中c在(#)中”,但是’#’可以是仅在运行时才知道的任意值列表。


阅读 1670

收藏
2020-04-16

共1个答案

小编典典

是的,如果你使用NamedParameterJdbcTemplate或SimpleJdbcTemplate使用命名参数,则可能在Spring中。List参数可以设置为java.util.List

List<String> list = new ArrayList<String>();

list.add("A");
list.add("B");
list.add("C");

List<SomeObject> result = simpleJdbcTemplate.query("SELECT * FROM t WHERE c in (:list)",
    new RowMapper<SomeObject>() { ... },
    Collections.singletonMap("list", list));

在这种情况下,当使用?s 替换命名参数时,Spring会根据实际列表的大小在内部使用所需数量的占位符创建SQL查询。

2020-04-16