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-plus的條件構造器詳細使用教程
常用函數:
| 函數 | 說明 | 例子(以下為where后的條件,select * from user where ?) |
|---|---|---|
| eq | 等于= | eq("name","張三") --> name = '張三' |
| ne | 不等于 != | ne("name","李四") --> name != '李四' |
| gt | 大于 > | gt(age,18) --> age > 18 //年齡大于18歲 |
| ge | 大于等于 >= | ge(age,18) --> age >=18 |
| lt | 小于 < | lt(age,20) --> age < 20 //年齡小于20歲 |
| le | 小于等于 <= | le(age,20) ---> age <= 20 |
| between | between 值1 and 值2 | between(age,15,25) ---> 匹配15歲到25歲之間(包含15和25) |
| nobetween | not between 值1 and 值2 | notBetween(age,35,45)-->匹配不包含35-45之間的(包含35和45) |
| like | like '%值%' | like("name","張") --> like '%張%' |
| notlike | not like '%值%' | notLike("name”,"張") --> not like '%張%' |
| likeLeft | like '%值' | likeLeft("name","王") ---> like "%王" |
| likeRight | like '值%' | likeRight("name","王") ---> like "王%" |
| isNull | 表字段 is NULL | isNull("name") ---> name is null |
| notNull | 表字段 is not NULL | isNull("name") ---> name is not null |
| in | 表字段in(v1,v2,v3...) | in("num",{1,2,3}) ---> num in (1,2,3) |
| notIn | 表字段 not in(v1.v2,v3) | notIn("num",{2,3,4}) ---> num not in (2,3,4) |
使用構造器完成一個簡單的查詢
// SQL語句:select * from user where id = ?
// 使用條件構造器QueryWrapper
@Test
void queryWrapper(){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id",1);
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::print);
}
那么再來一點更多條件的
// 我們要查詢name里姓氏包含 ‘張',并且年齡小于30歲的
// SQL語句:select * from user where name like '張%' and age < 30
// 條件構造器:
@Test
void queryWrapper(){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.likeRight("name","張").lt("age","30");
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::println);
}
// 查詢出年齡在15-25之間,并且他的名字不為空
// SQL語句:select * from user where name is not null and age between(15,25)
//條件構造器
@Test
void queryWrapper(){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.isNotNull("name").between("age",18,25);
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::println);
}
// 查詢名字中帶有王的,并且年齡不小于30,郵箱為空的
// SQL語句:select * from user where name like '%王%' and age >= 30 and email is null
// 條件構造器:
@Test
void queryWrapper(){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.like("name","王").ge("age",30).isNull("email");
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::println);
}總結
到此這篇關于Mybatis中使用in()查詢方式的文章就介紹到這了,更多相關Mybatis使用in()查詢內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
最新IDEA?2022基于JVM極致優(yōu)化?IDEA啟動速度的方法
這篇文章主要介紹了IDEA?2022最新版?基于?JVM極致優(yōu)化?IDEA?啟動速度,需要的朋友可以參考下2022-08-08
Java 實現Redis存儲復雜json格式數據并返回給前端
這篇文章主要介紹了Java 實現Redis存儲復雜json格式數據并返回給前端操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
IDEA的Swing可視化插件JFormDesigner詳解
JFormDesigner是一個專業(yè)的軟件應用程序,專門用于幫助您開發(fā)Java?Swing用戶界面,而無需具備編程技能。它可作為獨立實用程序使用,也可以將其用作各種IDE的插件,本文給大家介紹idea?Swing可視化插件,感興趣的朋友一起看看吧2022-06-06
詳解Java編程中static關鍵字和final關鍵字的使用
這篇文章主要介紹了詳解Java編程中static關鍵字和final關鍵字的使用,是Java入門學習中的基礎知識,需要的朋友可以參考下2015-09-09
collection集合體系與并發(fā)修改異常的解決方法
今天小編就為大家分享一篇關于collection集合體系與并發(fā)修改異常的解決方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

