Mybatis中使用in()查詢的方式詳解
這篇文章我會(huì)演示幾種mybatis中使用in查詢的方式。
1 數(shù)組、字符串
2 集合
3 使用Myabtis-plus框架的條件構(gòu)造器來(lái)實(shí)現(xiàn)
我們?cè)趍ysql中使用in查詢的方式是這樣的

那在mybatis中我們使用<foreach>標(biāo)簽來(lái)實(shí)現(xiàn)包含查詢
1 使用數(shù)組方式
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標(biāo)簽中為array,item是遍歷ids中的每個(gè)元素,默認(rèn)為item可以自定義。
測(cè)試類:

我們可以使用字符串來(lái)接收參數(shù),使用逗號(hào)分隔每個(gè)參數(shù),然后把分隔后的參數(shù)放到集合中。

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
測(cè)試:

3 第三種我們使用Mybatis-plus框架的條件構(gòu)造器來(lái)進(jìn)行查詢
@Test
void Test(){
QueryWrapper<Student> qw = new QueryWrapper<>();
qw.in("id",7,9);
List<Student> students = studentMapper.selectList(qw);
System.out.println(students.toString());
}測(cè)試結(jié)果:
[Student(id=7, name=蔡徐坤, age=18), Student(id=9, name=金科徐, age=18)]
附:Mybatis-plus的條件構(gòu)造器詳細(xì)使用教程
常用函數(shù):
| 函數(shù) | 說(shuō)明 | 例子(以下為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) |
使用構(gòu)造器完成一個(gè)簡(jiǎn)單的查詢
// SQL語(yǔ)句:select * from user where id = ?
// 使用條件構(gòu)造器QueryWrapper
@Test
void queryWrapper(){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("id",1);
List<User> users = userMapper.selectList(qw);
users.forEach(System.out::print);
}
那么再來(lái)一點(diǎn)更多條件的
// 我們要查詢name里姓氏包含 ‘張',并且年齡小于30歲的
// SQL語(yǔ)句:select * from user where name like '張%' and age < 30
// 條件構(gòu)造器:
@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語(yǔ)句:select * from user where name is not null and age between(15,25)
//條件構(gòu)造器
@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語(yǔ)句:select * from user where name like '%王%' and age >= 30 and email is null
// 條件構(gòu)造器:
@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);
}總結(jié)
到此這篇關(guān)于Mybatis中使用in()查詢方式的文章就介紹到這了,更多相關(guān)Mybatis使用in()查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring-boot實(shí)現(xiàn)增加自定義filter(新)
本篇文章主要介紹了spring-boot實(shí)現(xiàn)增加自定義filter(新),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Java實(shí)現(xiàn)打印二叉樹(shù)所有路徑的方法
這篇文章主要介紹了Java實(shí)現(xiàn)打印二叉樹(shù)所有路徑的方法,涉及java二叉樹(shù)遍歷與運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-02-02
最新IDEA?2022基于JVM極致優(yōu)化?IDEA啟動(dòng)速度的方法
這篇文章主要介紹了IDEA?2022最新版?基于?JVM極致優(yōu)化?IDEA?啟動(dòng)速度,需要的朋友可以參考下2022-08-08
Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端
這篇文章主要介紹了Java 實(shí)現(xiàn)Redis存儲(chǔ)復(fù)雜json格式數(shù)據(jù)并返回給前端操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
IDEA的Swing可視化插件JFormDesigner詳解
JFormDesigner是一個(gè)專業(yè)的軟件應(yīng)用程序,專門用于幫助您開(kāi)發(fā)Java?Swing用戶界面,而無(wú)需具備編程技能。它可作為獨(dú)立實(shí)用程序使用,也可以將其用作各種IDE的插件,本文給大家介紹idea?Swing可視化插件,感興趣的朋友一起看看吧2022-06-06
詳解Java編程中static關(guān)鍵字和final關(guān)鍵字的使用
這篇文章主要介紹了詳解Java編程中static關(guān)鍵字和final關(guān)鍵字的使用,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
collection集合體系與并發(fā)修改異常的解決方法
今天小編就為大家分享一篇關(guān)于collection集合體系與并發(fā)修改異常的解決方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03

