一、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. 关于gcc、make和CMake的区别

    CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多.CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要 ...

  2. swift - 指定VC隐藏导航栏 - 禁用tabbar的根控制器手势,防止两个tabbar跳转 手势冲突

    1. viewdidload 设置代理 self.navigationController?.delegate = self 2.代理里面指定VC 隐藏 //MARK: - 导航栏delegate e ...

  3. C#中泛型的解释(object,list,var,dynamic的区别)

    泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个新功能.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的 ...

  4. input,textarea在ios和Android上阴影和边框的处理方法(在移动端)

    1.去掉ios上阴影的方法只需要在css文件上添加input,textarea{-webkit-appearance: none;}就可以了 2.在移动端上input和textarea边框问题,也是在 ...

  5. poj 3624 && hdu 2955(背包入门)

    http://poj.org/problem?id=3624 背包中最基础的01背包,大意是有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].求解将哪些物品装入背包可使价值总 ...

  6. linux 使用笔记1

    Zox's code life 人生就是不停的战斗! xxx is not in the sudoers file.This incident will be reported.的解决方法 1.切换到 ...

  7. 十年百度工作心得(月薪75k)

    百度,是多少从事IT事业的程序员梦寐以求的地方,能进入这样大厂的程序员可以说都是数一数二的人才. 最近有不少朋友问,成为百度,腾讯,阿里Java架构师需要系统学习哪些Java技术. 下面分享互联网Ja ...

  8. linux下查看内存使用情况

    基本内存术语解读 1> free -m 同样是做为缓存,buffers和cache又有啥区别呢? 于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is ...

  9. 10分钟搭建 App 主流框架

    搭建主流框架界面 0.达成效果 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是搭建 ...

  10. Jsonpath的基本使用

    JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一.   如果可以使用xpath来解析js ...