Spring JdbcTemplate 查询绑定list参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring JdbcTemplate 查询绑定list参数相关的知识,希望对你有一定的参考价值。

如何绑定list参数进行查询
List<String> list ;

select * from table t where t.name in (:list);

解决再加100分

参考技术A HashMap<String,List> paramMap = new HashMap<String,List>();
paramMap.put("list",list);
String sql = "select * from table t where t.name in (:list)";
List<MaterialRequistion> mrs = getNamedParameterJdbcTemplate().query(sql,paramMap,BeanPropertyRowMapper.newInstance(结果集对象类名.class));
试试这个,用的是NamedParameterJdbcDaoSupport本回答被提问者和网友采纳
参考技术B 写为代码吧

首先通过JdbcTemplate创建Query对象:
Query query = ...;
query.setParameterList("list",list);
List 结果集 = query.list();追问

你把...那写出来我看看.

参考技术C String str = "";
用个循环吧
for(int i=0;i<list.size();i++)
if(0 == i)
str += list.get(i).xxxx;
else
str += "," + list.get(i).xxxx


select * from table t where t.name in (str);追问

这种笨方法已经用过了 加了, 查询会被认为是一个参数

追答

在使用SAVE方法的时候,使用了索引参数,意味着吧参数传递给UPDATE的时候,要以正确的顺序列出相应的值。为了避免这种情况,我们可以使用NamedParameterJdbcTemplate.

sql="insert into team (name) values (:name)";

public void save(Team team)

Map parameters = new HashMap();
parameters.put("name",team.getName());
jdbcTemplate.update(sql,parameters);


如果使用SimpleJdbcTemplate可以采用如下方法来保存:
public void save(Team team)

jdbcTemplate.update(sql,team.getName());


查询也是一样的

以上是关于Spring JdbcTemplate 查询绑定list参数的主要内容,如果未能解决你的问题,请参考以下文章

spring jdbcTemplate查询使用

Spring二刷笔记-JdbcTemplate

Spring使用JdbcTemplate对象完成查询

Spring NamedParameterJdbcTemplate 详解 解决jdbcTemplate中 in 参数的问

Spring 的 JdbcTemplate 是不是在查询超时后关闭连接?

spring jdbcTemplate的CRUD操作