How can I use IN query with NamedParameterJdbcTemplate?
protected List getList(String sql, Map<String, ?> param) {
String sql = "select birth from member where gender=:gender and surname in (:surname)";
List list = this.simpleJdbcTemplate.queryForList(sql, param);
return list;
}
I put 'surname1','surname2' and surname1','surname2 in params, so :surname would be 'surname1','surname2', but both didn't work. When there was only gender parameter, it worked.
How can I do this?
if we have an Object like this:
Class Member {
String birth;
String gender;
String surname;
//getter & setter
}
then:
String sql = "select birth from member where gender=:gender and surname in (:surname);";
List<String> surnames = new ArrayList<>();
surnames.add("aaaaa");
surnames.add("bbbbb");
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("surname", surnames);
parameters.addValue("gender", "man");
NamedParameterJdbcTemplate givenParamJdbcTemp = new NamedParameterJdbcTemplate(simpleJdbcTemplate);
// query a list for Member;
List<Member> data = givenParamJdbcTemp.query(sql, parameters, new RowMapper<Member>() {
@Override
public Member mapRow(ResultSet rs, int rowNum) throws SQLException {
Member member = new Member();
member.setBirth(rs.getString("birth"));
return member;
}
}
//just query a list for birth
List<String> data = givenParamJdbcTemp.query(sql, parameters, new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString("birth");
}
}