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());
    

条件构造器相关的方法在我另一篇博客,总结了常用的多种方法,以供大家参考:

Mybatis-plus的条件构造器详细使用教程_保加利亚的风的博客-CSDN博客_mybatis构造器

 测试结果:

[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

  1. <select id="findByIdsMap" resultMap="BaseResultMap">  
  2.  Select  
  3.  <include refid="Base_Column_List" />  
  4.  from jria where ID in  
  5.  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
  6.   #{item}  
  7.  </foreach>  
  8. </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()查询的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis:mybatis中使用in查询时的注意事项

Springboot + MyBatis入门培训 2 增改删除与查询 in like foreach操作

mybatis in 查询使用String做条件

Mybatis使用IN语句查询(模糊查询)

Mybatis使用IN语句查询(模糊查询)

mybatis处理集合循环数组和in查询等语句的使用