2015-01-21 1 views
3

와 SQL 쿼리 이것은 내가 쿼리를 수정할 How to execute IN() SQL queries with Spring's JDBCTemplate effectivly?IN() 및 WHERE =를하는 방법? Spring의 JdbcTemplate을

의 확장이 될 것입니다 :

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

가 어떻게 이름을 지원하기 위해 주어진 코드를 수정할 수 =? 매개 변수

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 –

+1

'JdbcTemplate' 대신'NamedParameterJdbcTemplate'을 사용하십시오. –

답변

0

두 주석을 모두 사용하여 성공했습니다.

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());