MyBatis:条件构造器QueryWrapper方法详解
QueryWrapper
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取.
测试用表:
1. eq、ne
说明:
eq:等于,ne:不等于
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> wrapper = new QueryWrapper<>();
//eq() 等于
wrapper.eq("last_name", "皮皮虾");
Employee one = employeeService.getOne(wrapper);
System.out.println(one);
}
@Test
public void contextLoads(){
QueryWrapper<Employee> wrapper = new QueryWrapper<>();
//ne() 不等于
wrapper.ne("gender", 0);
List<Employee> list = employeeService.list(wrapper);
System.out.println(list);
}
2. gt、ge、lt、le
说明:
gt:大于,ge:大于等于,lt:小于,le:小于等于
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> gtWrapper = new QueryWrapper<>();
//gt() 大于
gtWrapper.gt("age", 27);
List<Employee> gtList = employeeService.list(gtWrapper);
System.out.println(gtList); //********************** QueryWrapper<Employee> geWrapper = new QueryWrapper<>();
//ge() 大于等于
geWrapper.ge("age", 26);
List<Employee> geList = employeeService.list(geWrapper);
System.out.println(geList);
}
@Test
public void contextLoads(){
QueryWrapper<Employee> ltWrapper = new QueryWrapper<>();
//lt() 小于
ltWrapper.lt("age", 12);
List<Employee> ltList = employeeService.list(ltWrapper);
System.out.println(ltList); //********************** QueryWrapper<Employee> geWrapper = new QueryWrapper<>();
//le() 小于等于
leWrapper.le("age", 12);
List<Employee> leList = employeeService.list(leWrapper);
System.out.println(leList);
}
3. between、notBetween
说明:
between:在值1和值2之间,notBetween:不在值1和值2之间
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> betweenWrapper = new QueryWrapper<>();
//between() 区间的值
betweenWrapper.between("age", 10, 20);
List<Employee> betweenList = employeeService.list(betweenWrapper);
System.out.println(betweenList ); //********************** QueryWrapper<Employee> notBetweenWrapper = new QueryWrapper<>();
//notBetween() 不在区间的值
notBetweenWrapper.notBetween("age", 10, 21);
List<Employee> notBetweenList = employeeService.list(notBetweenWrapper );
System.out.println(notBetweenList );
}
4. like、notLike、likeLeft、likeRight
说明:
like:’%值%’,notLike:’%值%’,likeLeft:’%值’,likeRight:'值%'
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> likeWrapper = new QueryWrapper<>();
//like() 模糊查询匹配值
likeWrapper.like("last_name", "s");
List<Employee> likeList = employeeService.list(likeWrapper);
System.out.println(likeList ); //********************** QueryWrapper<Employee> notLikeWrapper = new QueryWrapper<>();
//notLike() 模糊查询不匹配值
notLikeWrapper.notLike("last_name", "s");
List<Employee> notLikeList = employeeService.list(notLikeWrapper);
System.out.println(notLikeList);
}
@Test
public void contextLoads(){
QueryWrapper<Employee> likeLeftWrapper = new QueryWrapper<>();
//likeLeft() 模糊查询匹配最后一位值
likeLeftWrapper.likeLeft("last_name", "s");
List<Employee> likeLeftList = employeeService.list(likeLeftWrapper);
System.out.println(likeLeftList ); //********************** QueryWrapper<Employee> likeRightWrapper = new QueryWrapper<>();
//likeRight() 模糊查询匹配第一位值
likeRightWrapper.likeRight("last_name", "s");
List<Employee> likeRightList = employeeService.list(likeRightWrapper );
System.out.println(likeRightList );
}
5. isNull、isNotNull
说明:
isNull:字段 IS NULL,isNotNull:字段 IS NOT NULL
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> isNullWrapper = new QueryWrapper<>();
//isNull() 为空
isNullWrapper.isNull("email");
List<Employee> isNullList = employeeService.list(isNullWrapper);
System.out.println(isNullList ); //********************** QueryWrapper<Employee> isNotNullWrapper = new QueryWrapper<>();
//isNotNull() 不为空
isNotNullWrapper.isNotNull("last_name", "s");
List<Employee> isNotNullList = employeeService.list(isNotNullWrapper );
System.out.println(isNotNullList );
}
6. in、notIn
说明:
in:字段 IN (v0, v1, …),notIn:字段 NOT IN (value.get(0), value.get(1), …)
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> inWrapper = new QueryWrapper<>();
//in() 符合多个条件的值
inWrapper.in("age", 8, 16, 26);
List<Employee> inList = employeeService.list(inWrapper);
System.out.println(inList ); //********************** QueryWrapper<Employee> notInWrapper= new QueryWrapper<>();
//notIn() 不符合多个条件的值
notInWrapper.notIn("age", 8, 16, 26);
List<Employee> notInList = employeeService.list(notInWrapper);
System.out.println(notInList );
}
7. or、and
说明:
or:或者 ,and:和
注意事项:
主动调用or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> orWrapper = new QueryWrapper<>();
//or() 查询age大于20 或者 gender等于1 的数据
orWrapper.gt("age", 20).or().eq("gender", 1);
List<Employee> orList = employeeService.list(orWrapper);
System.out.println(orList );
}
@Test
public void contextLoads(){
QueryWrapper<Employee> andWrapper = new QueryWrapper<>();
//and() 查询last_name等于皮皮虾b 和 gender等于1 的数据 (不使用and() 默认就是and())
andWrapper.eq("last_name", "皮皮虾b").eq("gender", 1);
List<Employee> andList = employeeService.list(andWrapper );
System.out.println(andList);
}
8. orderByAsc、orderByDesc
说明:
orderByAsc:升序:ORDER BY 字段, … ASC,orderByDesc:降序:ORDER BY 字段, … DESC
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> Wrapper = new QueryWrapper<>();
//orderByAsc() 升序排序
Wrapper.orderByAsc("id");
List<Employee> list = employeeService.list(Wrapper);
for(Employee e : list) {
System.out.println(e);
}
}
@Test
public void contextLoads(){
QueryWrapper<Employee> Wrapper = new QueryWrapper<>();
//orderByDesc() 降序排序
Wrapper.orderByDesc("id");
List<Employee> list = employeeService.list(Wrapper);
for(Employee e : list) {
System.out.println(e);
}
}
9. inSql、notInSql (不常用)
说明:
inSql:字段 IN ( sql语句 ),notInSql:字段 NOT IN ( sql语句 )
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> inSqlWrapper = new QueryWrapper<>();
//inSql() 符合sql语句的值
inSqlWrapper .inSql("select id from employee where id < 10");
List<Employee> inSqlList = employeeService.list(inSqlWrapper );
System.out.println(inSqlList ); //********************** QueryWrapper<Employee> notInSqlWrapper= new QueryWrapper<>();
//notInSql() 不符合sql语句的值
notInSqlWrapper.notInSql("select id from employee where id < 10");
List<Employee> notInSqlList = employeeService.list(notInSqlWrapper);
System.out.println(notInSqlList );
}
10. exists、notExists (不常用)
说明:
exists:拼接 EXISTS ( sql语句 ),notExists:拼接 NOT EXISTS ( sql语句 )
测试:
@Test
public void contextLoads(){
QueryWrapper<Employee> existsWrapper = new QueryWrapper<>();
//exists() 查询符合sql语句的值
existsWrapper.exists("select last_name,gender from employee where id = 1");
List<Employee> existsList = employeeService.list(existsWrapper);
System.out.println(existsList ); //********************** QueryWrapper<Employee> notExistsWrapper = new QueryWrapper<>();
//notExists() 查询不符合sql语句的值
notExistsWrapper.notExists("select last_name,gender from employee where id = 1");
List<Employee> notExistsList = employeeService.list(notExistsWrapper);
System.out.println(notExistsList ); }
文章转载至:https://blog.csdn.net/llllllkkkkkooooo/article/details/108216957
MyBatis:条件构造器QueryWrapper方法详解的更多相关文章
- MybatisPlus学习(四)条件构造器Wrapper方法详解
文章目录 1.条件构造器 2.QueryWrapper 2.1.eq.ne 2.2.gt.ge.lt.le 2.3.between.notBetween 2.4.like.notLike.likeLe ...
- MP实战系列(十二)之封装方法详解(续二)
继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectB ...
- MP实战系列(十一)之封装方法详解(续一)
之前写的封装方法详解,比较简要. 今天我主要讲增加和删除及其修改.查的话得单独再详讲. 增删改查,无论是Java或者C#等等,凡是对数据库操作的都离不开这四个. 一.增加方法讲解 MyBatis Pl ...
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
- 《深入理解mybatis原理6》 MyBatis的一级缓存实现详解 及使用注意事项
<深入理解mybatis原理> MyBatis的一级缓存实现详解 及使用注意事项 0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓 ...
- [转载]Mybatis Generator最完整配置详解
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration ...
- 008-Scala主构造器、私有构造器、构造器重载实战详解
008-Scala主构造器.私有构造器.构造器重载实战详解 Scala主构造器实战 无参数的主构造器 分析 1.name 需要赋初值,一般通过占位符来代表空值 2.private 声明私有的age 生 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- $.each()方法详解
$.each()方法详解 each()函数具有十分强大的遍历功能,可以遍历一维数组.多维数组.Dom.Json等. 在JavaScript中使用$.each可以大大减轻我们的工作量. 1.处理一维数组 ...
随机推荐
- Linux xargs命令-(转载)
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...
- python基础之centos7源码安装python3
一.先安装python3所依赖的软件包,非常重要(否则可能会出现python3安装成功,却缺少相应的pip) yum groupinstall "Development tools" ...
- esp项目,
http://www.cirmall.com/circuit/6012/%E6%99%BA%E8%83%BD%E5%8C%96%E7%A7%8D%E8%8A%B1%E7%AE%80%E6%98%93% ...
- UCOS明白解析
UCOSII 是一个可以基于 ROM 运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS).为了提供最 ...
- Mybatis3详解(十四)----Mybatis的分页
1.前言 在前面学习mybatis的时候,会经常对数据进行增删改查操作,使用最多的是对数据库进行查询操作,但是前面都是简单的案例,所以查询的数据量不是很大,自然查询时没有任何压力,但是如果在实际的项目 ...
- Oracle的Rman差异增量备份
所谓增量备份,顾名思义即是每次备份操作那些发生了"变化"的数据块.在RMAN增量备份中有两种:Differential(差异备份)和Cumulative(增量备份)方式.由于需求这 ...
- 并发编程-Condition
Condition 一个Lock中应该绑定一个Condition对象.Condition是Java提供用来实现等待/通知的类. 我们知道Object对象提供了wait.waitAll.notify.n ...
- Docker系列——Grafana+Prometheus+Node-exporter微信推送(三)
在之前博文中,已经成功的实现了邮件推送.目前主流的办公终端,就是企业微信.钉钉.飞书.今天来分享下微信推送,我们具体来看. 企业微信 在配置企业微信推送时,需要有微信企业,具体如何注册.使用,另外百度 ...
- 免费版对象存储【minIO】CentOS部署实践记录 2021
好久没写,记录一下 1.背景 之前一直用的七牛,不过是收费的,然后有些定制化需求,可能比较看重预算,然后就有了这篇开源方式:minio 2.简介 官方文档:http://docs.minio.org. ...
- GD32F330 | ADC实例 基于DMA方式
GD32F330 | ADC实例 基于DMA方式 简单记录一下 ADC多通道转换 DMA搬运 的使用,以 GD32F330G8U6 为例: 一.ADC 基础知识 12位ADC是一种采用逐次逼近方式的模 ...