当我们使用PreparedStatement 去build IN 语句的时候通常我们考虑的是select * from table where name in (?), 如果有多个参数那么生成的sql语句应该是select * from table where name in (?,?,...)
当我们使用Spring的JdbcTemplate的时候就可以配合namedParameterJdbcTemplate使用,例如
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate();
List<Integer> ids= Arrays.asList(new Integer[] {1, 2, 3});
Map<String,List<String>> params = Collections.singletonMap("ids", integerList);
namedParameterJdbcTemplate.queryForXXX("SELECT * FROM table WHERE field IN (:ids)", params);
它生成sql如下:
SELECT * FROM table WHERE field IN (?,?,?)