导读
由于项目需要,现在需要查询一个List集合中的数据不在表中某个字段不存在的数据,并将其查询出来。
使用
原因
由于项目需要,现在需要查询一个List集合中的数据不在表中某个字段不存在的数据,并将其查询出来。
举例:
集合List
List list = new ArrayList();
list.add("小明");
list.add("小张");
list.add("小丽");
list.add("小鸡");
list.add("小猪");
list.add("小二");
用户表user
id | name | age |
---|---|---|
1 | 小明 | 19 |
2 | 小丽 | 21 |
3 | 张三 | 31 |
4 | 小李 | 24 |
5 | 王二 | 34 |
解决方法
组装成一个临时表:将集合中的所有元素拼成一个临时表,然后使用not in,查找数据库表内所有不在临时表中的数据。
Mybatis结构如下:
<where>
<if test="set != null and set.size != 0">
select v.userName FROM
<foreach collection="userList" item="item" separator="union" open="(" close=")">
select #{item} as userName
</foreach>
v where v.userName not IN (select xx from table where xxxx='****')
</if>
</where>
- table:表名
- xxxx=’**‘:条件,这里可以是
例子:
<where>
<if test="set != null and set.size != 0">
select v.userName FROM
<foreach collection="userList" item="item" separator="union" open="(" close=")">
select #{item} as userName
</foreach>
v where v.userName not IN (select name from user where age>20);
</if>
</where>