如何执行 IN() 和 WHERE=?使用 Spring 的 JDBCTemplate 进行 SQL 查询
Posted
技术标签:
【中文标题】如何执行 IN() 和 WHERE=?使用 Spring 的 JDBCTemplate 进行 SQL 查询【英文标题】:How to do IN() and WHERE=? SQL queries with Spring's JDBCTemplate 【发布时间】:2015-01-21 19:00:26 【问题描述】:这是How to execute IN() SQL queries with Spring's JDBCTemplate effectivly?的扩展
我希望将查询修改为:
"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);
【问题讨论】:
为什么不使用'name'作为命名参数呢?名称=:名称 使用NamedParameterJdbcTemplate
而不是JdbcTemplate
。
【参考方案1】:
我成功使用了两个 cmets。
我会将下面的代码发布给以后可能会发现这个问题的人:
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());
【讨论】:
以上是关于如何执行 IN() 和 WHERE=?使用 Spring 的 JDBCTemplate 进行 SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 MySQLdb 执行“SELECT ... WHERE ... IN ...”
在 Postgresql 中的多个列上执行 WHERE IN