美文网首页
NamedParameterJdbcTemplate用法

NamedParameterJdbcTemplate用法

作者: 西安法律咨询服务平台与程序员 | 来源:发表于2019-04-10 13:09 被阅读0次

为啥不用JdbcTemplate,而要使用NamedParameterJdbcTemplate

因为JdbcTemplate不好用。具体说来2点:

  • jdbcTemplate.queryForObject方法入参不支持以Map的形式传递参数,需要按照sql语句中参数的顺序组织入参的List。
  • jdbcTemplate.queryForObject方法直接不支持的in查询。只支持Integer.class String.class 这种单数据类型的入参。
    例如:
List<Long> idList = ...;
String name = ...;
StringBuilder idListSb = new StringBuilder();
for(Long id : idList){
  idListSb.append(id + ",");
}
String sql = "select count(*) from user where id in (?) and name = ?";
List<Object> objects = new ArrayList<>();
objects.add(idListSb.toString().RTrim(','));
object.add (name);
jdbcTemplate.queryForObject(sb.toString(),objects,Long.class);

而NamedParameterJdbcTemplate时,其本来就支持in查询和Map类型的入参。

List<Long> idList = ...;
String name = ...;
String sql = "select * from user where id in (:ids) and name = :name";
Map<String, Object> param  = new HashMap<>();
param.put("ids", idList);
param.put("name", name);
namedParameterJdbcTemplate.queryForObject(sb.toString(),param,Long.class);

相关文章

网友评论

      本文标题:NamedParameterJdbcTemplate用法

      本文链接:https://www.haomeiwen.com/subject/virniqtx.html