Mybatis-Plus 实战完整学习笔记(九)------条件构造器核心用法大全(上)
一、Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减。

二、构造器UML图(3.0.3)-----实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等
注意: 使用的是数据库字段,不是 Java 属性!





总体就是入上图的样式的结构,主要使用QueryWrapper 和UpdateWrapper,JDK1.8使用LambdaQueryWrapper和LambdaUpdateWrapper
注意2.3版本使用的是EntityWrapper实现条件构造器,这里将阐述和说明


构造器拼接的方法

实战演练:(3.0.3版)
1、全部查询,拼接一个where过滤条件
@Test
public void selectWrapper() throws SQLException { // 条件构造器使用 // 1、全部查询,拼接一个where过滤条件,如果是多个可以map中put多个,多个字段如果有某个字段是空的,就会默认添加空查询条件
// SELECT id,last_name,email,gender,age FROM tbl_employee WHERE gender = ? AND age IS NULL
Employee employee = new Employee();
employee.setGender(1); Map<String,Object> map = new HashMap<>(16);
map.put("gender",employee.getGender());
map.put("age",employee.getAge()); List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().allEq(map)); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
}
注意2.3版本的可以用EntityWrapper代替QureyWrapper,其他写法一样
2、map添加的字段是否加到where的条件中
@Test
public void selectWrapper() throws SQLException { // 条件构造器使用
Map<String,Object> map = new HashMap<>(16);
map.put("gender",employee.getGender());
map.put("age",employee.getAge()); // 2、map添加的字段是否加到where的条件中,通过lambda表达式判断,如果是true就加入,反之,不加入,因为Map的key的String有gender,所以会过滤
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().allEq((String,Object)->String.equals("gender"),map)); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
}
3、and使用
@Test
public void selectWrapper() throws SQLException { // 条件构造器使用
// 3、and使用 List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().and(i -> i.eq("last_name", "Betty0"))); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
相当于SQL语句SELECT id,last_name,email,gender,age FROM tbl_employee WHERE ( last_name = ? )
and前会有一个condition,判别是否加入到sql语句中的条件,默认是true
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().and(true,i -> i.eq("last_name", "Betty0")));
4、apply拼接条件使用
4、apply使用
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().apply("last_name='Betty0'")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
外部参数调用的话List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().apply("last_name={0}","Betty0"));
5、between使用方法
5、between
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().between("age",20,50)); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
6、eq 等于 =
6、eq 充当and使用
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("last_name","Betty0")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
7、ge大于等于 >=
7、ge大于等于
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().ge("age","40"));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
8、gt大于
// 8 、gt 大于
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().gt("age","40")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
9、分组操作
// 9、分组操作
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("id","25").groupBy("age","gender")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
10、having使用
10、having使用
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("gender","1").having("age = {0}",30)); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
11、in使用
// 11、in 操作
List<Integer> idList = new ArrayList<>();
idList.add(31);
idList.add(32); List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().in(true,"id",idList));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
12、inSql使用
12、inSql使用
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().inSql("id", "12,22,23,24,25,26"));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
13、isNotNull字段值非空
13、字段值非空
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().isNotNull("age")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
14、字段值为空的
14、字段值为空的
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().isNull("age")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
15、结尾拼接sql语句,存在Sql注入风险,不建议使用
15、结尾拼接sql语句
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().last("and age >30")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
16、小于等于 <=
16、小于等于 <=
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().le("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
17、小于
17、小于
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().lt("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
18、模糊查询
18、模糊查询
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().like("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
19、LikeLeft以什么结尾的查询
19、 LikeLeft以什么结尾的查询
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().likeLeft("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
20、likeRight以什么开头
20、likeRight以什么开头
// List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().likeRight("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
21、ne不等于 <>用法
21、ne不等于 <>用法
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().ne("age", "20")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
22、嵌套的查询
22、嵌套的查询
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().nested(true,i -> i.eq("last_name", "Betty0"))); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
23、不在什么区间
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notBetween("age",20,50));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
24、不存在notexist
24、不存在
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notExists("select id from tbl_employee where age = 1")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
25、存在exist
25、存在
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().exists("select id from tbl_employee where age = 12")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
26、not in 不在区间内
List<Integer> idList = new ArrayList<>();
idList.add(31);
idList.add(32);
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notIn("id",idList)); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
27、notSQL 不在区间内
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notInSql("id","12,22"));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
28、notLike 模糊查询没有这个关键字
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notLike("age", "2"));
if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
29、orderBy根据字段升序还是降序排序
29、orderBy根据字段升序还是降序排序
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().orderBy(true, false, "age")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
30、or或者
30、or或者
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("id","25").or().eq("gender","1")); if (!employeeList.isEmpty()) {
logger.info("++条件构造器查询员工信息+++++" + gson.toJson(employeeList));
}
Mybatis-Plus 实战完整学习笔记(九)------条件构造器核心用法大全(上)的更多相关文章
- Mybatis-Plus 实战完整学习笔记(十)------条件构造器核心用法大全(下)
31.升序orderByAsc 31.升序orderByAsc List<Employee> employeeList = employeeMapper.selectList(new Qu ...
- Mybatis-Plus 实战完整学习笔记(十一)------条件构造器删除,修改,conditon
1.修改功能--其他过滤方式跟select一样 /** * 修改条件构造器 * @throws SQLException */ @Test public void selectUpdate() thr ...
- Mybatis-Plus 实战完整学习笔记(一)------简介
第一章 简介 1. 什么是MybatisPlus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只 ...
- Mybatis-Plus 实战完整学习笔记(八)------delete测试
1.根据ID删除一个员工deleteById /** * 删除客户 * * @throws SQLException */ @Test public void deletedMethod() thro ...
- Mybatis-Plus 实战完整学习笔记(七)------select测试二
1.查询selectOne (3.0.3版) @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...
- Mybatis-Plus 实战完整学习笔记(六)------select测试一
查询方法(3.0.3) 1.查询一个员工的数据 @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...
- Mybatis-Plus 实战完整学习笔记(四)------全局参数配置
一.全局配置设置 (1)全局配置Id自动生成 <!--定义mybatisplus全局配置--> <bean id="globalConfig" class=&qu ...
- Mybatis-Plus 实战完整学习笔记(三)------导入MybatisPlus环境
1.dao层接口引入 package com.baidu.www.mplus.mapper; import com.baidu.www.mplus.bean.Employee; import com. ...
- Mybatis-Plus 实战完整学习笔记(二)------环境搭建
第二章 使用实例 1.搭建测试数据库 -- 创建库 CREATE DATABASE mp; -- 使用库 USE mp; -- 创建表 CREATE TABLE tbl_employee( ...
随机推荐
- java链接JDBC中的?问题
String sql = "select * from student where name= ?"; PreparedStatement pst = conn.prepareSt ...
- nginx配置websocket
有时候我们需要给websocket服务端做一下nginx的配置,比如需要给websocket服务端做负载均衡,或者,有些系统要求访问websocket的时候不能带端口,这时候我们就需要用nginx来进 ...
- web中CookieUtils的工具类
该类中包含Web开发中对Cookie的常用操作,如需要Copy带走 package com.project.utils; import java.io.UnsupportedEncodingExcep ...
- Extjs如何添加多个Vtype
http://devjs.eu/en/multiple-validation-multi-vtype-for-textfield-in-ext-js-4/
- bootstrap collapse 无法收回
$(function () { //修复collapse不能正常折叠的问题 $(".collapsed").click(function () { var itemHref = $ ...
- 78k的text 文件,输出到textbox 竟然用了20几秒的原因
开始查资料以为是io读取的,磁盘速度慢的之类的,后来一想,text 又不是几十万条数据,才那么两千行,咋回事. 原来是循环中不停的修改textbox值导致的. 总结: 比较大的运算,特别是大的循环, ...
- 1F - A+B for Input-Output Practice (III)
Your task is to Calculate a + b. Input Input contains multiple test cases. Each test case contains a ...
- 关于java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.的问题
报错如下: 300 [main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a valid hadoop home directory ...
- Hibbernate详解一
这里先做一个简单的入门,后面有详解 记住图解原理: 这里只是没有整合spring等项目使用的hibernate的使用详解. 一.Hibernate简介 1.Hibernate在开发中所处的位置 2.O ...
- hdu 1257 && hdu 1789(简单DP或贪心)
第一题;http://acm.hdu.edu.cn/showproblem.php?pid=1257 贪心与dp傻傻分不清楚,把每一个系统的最小值存起来比较 #include<cstdio> ...