问题
今天分享一个关于
int[]
和integer[]
数组在mybatis-plus条件构造器中产生的问题,下面现为大家演示一下这个问题
需求
例:查询id包含
7
和9
的学生
需求差不多类似于这样,看起来很简单,我第时间想的是将7
和9
方到数组里面,然后将数组中的值取出来放到条件中,以此来查询,下面为大家演示一下
代码
@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