Mybatis中使用in()查询
Posted 保加利亚的风
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis中使用in()查询相关的知识,希望对你有一定的参考价值。
这篇文章我会演示几种mybatis中使用in查询的方式。
1 数组、字符串
2 集合
3 使用Myabtis-plus框架的条件构造器来实现
我们在mysql中使用in查询的方式是这样的
那在mybatis中我们使用<foreach>标签来实现包含查询
1 使用数组方式
Mapper:
Mapper.xml:
<select id="studentList" resultType="com.ywt.springboot.model.Student"> select * from student where id in <foreach collection="array" index="index" item="item" open="(" separator="," close=")"> #item </foreach> </select>
注:foreach中的 collection标签中为array,item是遍历ids中的每个元素,默认为item可以自定义。
测试类:
我们可以使用字符串来接收参数,使用逗号分隔每个参数,然后把分隔后的参数放到集合中。
2 使用List集合的方式
Mapper:
Mapper.xml
<select id="studentList" resultType="com.ywt.springboot.model.Student"> select * from student where id in <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> #item </foreach> </select>
使用list方式collection的value必须为list
测试:
3 第三种我们使用Mybatis-plus框架的条件构造器来进行查询
@Test void Test() QueryWrapper<Student> qw = new QueryWrapper<>(); qw.in("id",7,9); List<Student> students = studentMapper.selectList(qw); System.out.println(students.toString());
条件构造器相关的方法在我另一篇博客,总结了常用的多种方法,以供大家参考:
测试结果:
[Student(id=7, name=蔡徐坤, age=18), Student(id=9, name=金科徐, age=18)]
mybatis sql in 查询(mybatis sql语句传入参数是list)mybatis中使用in查询时in怎么接收值
1.in查询条件是list时
<select id="getMultiMomentsCommentsCounts" resultType="int"> select moment_comment_count from tbl_moment_commentCount where mid in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select>
.1 如果参数的类型是List, 则在使用时,collection属性要必须指定为 list
- <select id="findByIdsMap" resultMap="BaseResultMap">
- Select
- <include refid="Base_Column_List" />
- from jria where ID in
- <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
- #{item}
- </foreach>
- </select>
2.in查询条件是枚举值时
默认下,使用select xxx where in(xx,xx)查询,返回结果是按主键排序的,如果要按in()中值的排列顺序,可以这样做:
select * from talbe where id in(3,2,4,1) ORDER BY FIND_IN_SET( id, ‘3,2,4,1‘)
以上是关于Mybatis中使用in()查询的主要内容,如果未能解决你的问题,请参考以下文章