如何在Spring的JDBCTemplate中使用IN()和WHERE=? SQL查询

4

这是对如何有效地使用Spring的JDBCTemplate执行IN() SQL查询的扩展?的改进。

我希望修改查询为:

"SELECT * FROM foo WHERE name=? and value IN (:ids)"

如何修改给定的代码以支持name =?参数

Set<Integer> ids = ...;

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);

List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)",
     getRowMapper(), parameters);

3
为什么不能将"name"作为命名参数使用? name=:name - Taras Velykyy
1
使用NamedParameterJdbcTemplate代替JdbcTemplate - M. Deinum
1个回答

1
我使用两种注释都成功了。
以下是代码,供以后可能遇到这个问题的人参考:
String sql = "SELECT * FROM foo WHERE name=:name and value IN (:ids)";

Set<Integer> ids = ...;
String name = "John";

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);
parameters.addValue("name",name);

List<Foo> foo = getNamedParameterJdbcTemplate().query(sql, parameters, getRowMapper());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接