使用jdbcTemplate时,单个参数查询用的比较多,一般如下:
String sql = "select x from y where z = ?";
List<Map<String,Object>> result = jdbcTemplate.queryForList(sql, zValue);
即用?
作为占位符,在queryForList
中用实际值去替换。
而如果遇到where z in (z1,z2,...)
这类多个参数的查询,上面就不好用了,可以使用NamedParameterJdbcTemplate
。
用法:
String sql = "select x from y where z in (:zs) and a = :a";
List<String> zs = ...;
Map<String, Object> paramMap = new HashMap<String, Object>();
//这里的zs 必须和sql语句里的参数zs 名称一致
paramMap.put("zs", zs);
//也可用于单个参数
paramMap.put("a", aValue);
List<Map<String, Object>> r = namedParameterJdbcTemplate.queryForList(sql, paramMap);