一、Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减。

二、构造器UML图(3.0.3)-----实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等

  1. 注意: 使用的是数据库字段,不是 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 实战完整学习笔记(九)------条件构造器核心用法大全(上)的更多相关文章

  1. Mybatis-Plus 实战完整学习笔记(十)------条件构造器核心用法大全(下)

    31.升序orderByAsc 31.升序orderByAsc List<Employee> employeeList = employeeMapper.selectList(new Qu ...

  2. Mybatis-Plus 实战完整学习笔记(十一)------条件构造器删除,修改,conditon

    1.修改功能--其他过滤方式跟select一样 /** * 修改条件构造器 * @throws SQLException */ @Test public void selectUpdate() thr ...

  3. Mybatis-Plus 实战完整学习笔记(一)------简介

    第一章    简介      1. 什么是MybatisPlus                MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只 ...

  4. Mybatis-Plus 实战完整学习笔记(八)------delete测试

    1.根据ID删除一个员工deleteById /** * 删除客户 * * @throws SQLException */ @Test public void deletedMethod() thro ...

  5. Mybatis-Plus 实战完整学习笔记(七)------select测试二

    1.查询selectOne  (3.0.3版) @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...

  6. Mybatis-Plus 实战完整学习笔记(六)------select测试一

    查询方法(3.0.3) 1.查询一个员工的数据 @Test public void selectMethod() throws SQLException { // 根据ID获取一个对象的数据 Empl ...

  7. Mybatis-Plus 实战完整学习笔记(四)------全局参数配置

    一.全局配置设置 (1)全局配置Id自动生成 <!--定义mybatisplus全局配置--> <bean id="globalConfig" class=&qu ...

  8. Mybatis-Plus 实战完整学习笔记(三)------导入MybatisPlus环境

    1.dao层接口引入 package com.baidu.www.mplus.mapper; import com.baidu.www.mplus.bean.Employee; import com. ...

  9. Mybatis-Plus 实战完整学习笔记(二)------环境搭建

     第二章    使用实例   1.搭建测试数据库 -- 创建库 CREATE DATABASE mp; -- 使用库 USE mp; -- 创建表 CREATE TABLE tbl_employee( ...

随机推荐

  1. SQL Server2005/2008 作业执行失败的解决办法

    数据库:SQL Server 2005/2008,运行环境:Windows Server 2008  在数据库里的所有作业都执行失败,包括自动执行和手动执行.在事件查看器里看到的错误报告如下: 该 作 ...

  2. vue解决遮罩层滚动方法

    vue 遮罩层阻止默认滚动事件 在写移动端页面的时候,弹出遮罩层后,我们仍然可以滚动页面. vue中提供 @touchmove.prevent 方法可以完美解决这个问题 <div class=& ...

  3. @params、@PathVariabl和@RequestParam用法与区别

    [1]params params: 指定request中必须包含某些参数值是,才让该方法处理. @RequestMapping(value = "testParamsAndHeaders&q ...

  4. 9.14 h5日记

    9.14 ❤知识补充 margin的问题:margin:0 auto:可以解决元素在网页的居中问题(记得设置宽度) 1.css层叠样式表的问题 CSS的两个性质 (1)继承性 (2)层叠性       ...

  5. 当时钟事件声明为过程变量 让system.threading.timer时钟失效

    这个项目的小模块就是画label 控件到tablepayoutpanel表单 之中, 中间用到了时钟,事件(带返回值的),哈希表 .由于时钟定义在 form1的启动构造函数中导致了form1,启动完毕 ...

  6. 5I - 汉诺塔IV

    还记得汉诺塔III吗?他的规则是这样的:不允许直接从最左(右)边移到最右(左)边(每次移动一定是移到中间杆或从中间移出),也不允许大盘放到小盘的上面.xhd在想如果我们允许最大的盘子放到最上面会怎么样 ...

  7. android 线性布局

    activity_main.xml线性布局 <?xml version="1.0" encoding="utf-8"?> <LinearLay ...

  8. php 多进程

    php 在使用场景中一般是处理web应用,所以多进程使用不适合在web中使用,且php-fpm中pcntl_fork不能使用,所以使用场景是在cgi模式下 一个进程调用pcntl_fork函数后,系统 ...

  9. Java 常见面试题(一)

    1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...

  10. sqrt函数倒数计算新对比

    某人发表说 雷神之锤 里面有一个 1/sqrt(x) 的函数非常了不起. 但经过实测,发现现在计算机已经优化, 该算法已经没有优势. 具体看文档: <a href="http://fi ...