是否可以通过Jdbc模板在SQL查询中生成任意“ in()”列表:
例:
“从t中选择*,其中c在(#)中”,但是’#’可以是仅在运行时才知道的任意值列表。
是的,如果你使用NamedParameterJdbcTemplate或SimpleJdbcTemplate使用命名参数,则可能在Spring中。List参数可以设置为java.util.List:
NamedParameterJdbcTemplate或SimpleJdbcTemplate
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查询。
?