Mybatis-plus条件构造器in查询中传入数组找不到数据

导读:本篇文章讲解 Mybatis-plus条件构造器in查询中传入数组找不到数据,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

问题

今天分享一个关于int[]integer[]数组在mybatis-plus条件构造器中产生的问题,下面现为大家演示一下这个问题

需求

例:查询id包含79的学生

需求差不多类似于这样,看起来很简单,我第时间想的是将79方到数组里面,然后将数组中的值取出来放到条件中,以此来查询,下面为大家演示一下

代码

@Test
    void demo() {
        int[] ids = {7, 9};
        QueryWrapper<Student> qw = new QueryWrapper<>();
        qw.in("id", ids);
        List<Student> students = studentMapper.selectList(qw);
        System.out.println(students.toString());
    }

输出结果

==>  Preparing: SELECT id,name,age FROM student WHERE (id IN (?))
==> Parameters: [I@4f93bf0a(int[])
<==      Total: 0
[]

打印的sql显示是数组的内存地址,然后我就将这个数组遍历为字符串来进行条件查询。

更改后的代码👇
qw.in("id", Arrays.toString(ids));

输出结果

==>  Preparing: SELECT id,name,age FROM student WHERE (id IN (?))
==> Parameters: [7, 9](String)
<==      Total: 0 
[]

结果还是不行,它还是找不到,于是尝试用了一下包装类integer[]

@Test
    void demo() {
        Integer[] ids = {7, 9};
        QueryWrapper<Student> qw = new QueryWrapper<>();
        qw.in("id", ids);
        List<Student> students = studentMapper.selectList(qw);
        System.out.println(students.toString());
    }

输出结果

==>  Preparing: SELECT id,name,age FROM student WHERE (id IN (?,?))
==> Parameters: 7(Integer), 9(Integer)
<==    Columns: id, name, age
<==        Row: 7, 五一烦, 20
<==        Row: 9, 金科徐, 12
<==      Total: 2
[Student(id=7, name=五一烦, age=20), Student(id=9, name=金科徐, age=12)]

结果就是可以的

那么int[]integer[]类型有什么区别呢?懂得的大牛可以评论区解答一下

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/48497.html

(0)
小半的头像小半

相关推荐

极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!