EntityWrapper 简介

  • 1、 MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担, 能够有效提高开发效率。
  • 2、实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等。
  • 3、注意: 使用的是数据库字段,不是 Java 属性。
  • 4、条件参数说明:

查询测试

  1. @Test
  2. public void testEntityWrapperSelect() {
  3.  
  4. 1. //我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
  5. List<Employee> emps =employeeMapper.selectPage(new Page<Employee>(1, 2),
  6. new EntityWrapper<Employee>()
  7. .between("age", 18, 50)
  8. .eq("gender", 1)
  9. .eq("last_name", "Tom")
  10. );
  11. System.out.println(emps);
  12.  
  13. 2. //我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
  14. List<Employee > emps3 = employeeMapper.selectPage(
  15. new Page<Employee>(1,2),
  16. Condition.create()
  17. .between("age", 18, 50)
  18. .eq("gender", "1")
  19. .eq("last_name", "Tom")
  20. );
  21. System.out.println(emps3);
  22.  
  23. 3. // 查询tbl_employee表中, 性别为女并且名字中带有"老师" 或者 邮箱中带有"a"
  24. List<Employee> emps1 = employeeMapper.selectList(
  25. new EntityWrapper<Employee>()
  26. .eq("gender", 0)
  27. .like("last_name", "老师")
  28. //.or() // SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?)
  29. .orNew() // SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
  30. .like("email", "a")
  31. );
  32. System.out.println(emps1);
  33.  
  34. 4. //查询性别为女的, 根据age进行排序(asc/desc), 简单分页
  35. List<Employee> emps2 = employeeMapper.selectList(
  36. new EntityWrapper<Employee>()
  37. .eq("gender", 0)
  38. .orderBy("age") //默认是升序
  39. //.orderDesc(Arrays.asList(new String [] {"age"}))
  40. .last("desc limit 1,3") //在sql最后拼接
  41. );
  42. System.out.println(emps2);
  43. }

日志输出:

  1. selectPage方法:
  2. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
  3. Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
  4. Total: 1
  5. [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22]]
  6.  
  7. selectPage使用Condition
  8. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
  9. Parameters: 18(Integer), 50(Integer), 1(String), Tom(String)
  10. Total: 1
  11. [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22]]
  12.  
  13. selectList使用or
  14. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ? OR email LIKE ?)
  15. Parameters: 0(Integer), %老师%(String), %a%(String)
  16. Total: 3
  17. [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22], Employee [id=2, lastName=Jerry, email=jerry@atguigu.com, gender=0, age=25], Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null]]
  18.  
  19. selectList使用orNew
  20. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
  21. Parameters: 0(Integer), %老师%(String), %a%(String)
  22. Total: 3
  23. [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22], Employee [id=2, lastName=Jerry, email=jerry@atguigu.com, gender=0, age=25], Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null]]

  24. selectList使用orderBy
  25. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age
  26. Parameters: 0(Integer)
  27. Total: 2
  28. [Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null], Employee [id=2, lastName=Jerry, email=jerry@atguigu.com, gender=0, age=25]]
  29.  
  30. selectList使用orderDesc
  31. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age DESC
  32. Parameters: 0(Integer)
  33. Total: 2
  34. [Employee [id=2, lastName=Jerry, email=jerry@atguigu.com, gender=0, age=25], Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null]]
  35.  
  36. selectList使用last
  37. Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age desc limit 1,3
  38. Parameters: 0(Integer)
  39. Total: 1
  40. [Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null]]

修改测试

  1. @Test
  2. public void testEntityWrapperUpdate() {
  3. Employee employee = new Employee();
  4. employee.setLastName("王五");
  5. employee.setEmail("cls@sina.com");
  6. employee.setGender(0);
  7. employeeMapper.update(employee,
  8. new EntityWrapper<Employee>()
  9. .eq("last_name", "Tom")
  10. .eq("age", 44)
  11. );
  12. }

日志输出:

  1. Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE (last_name = ? AND age = ?)
  2. Parameters: 王五(String), cls@sina.com(String), 0(Integer), Tom(String), 44(Integer)
  3. Updates: 0

删除测试

  1. @Test
  2. public void testEntityWrapperDelete() {
  3. employeeMapper.delete(
  4. new EntityWrapper<Employee>()
  5. .eq("last_name", "Tom")
  6. .eq("age", 22)
  7. );
  8. }

日志输出:

  1. Preparing: DELETE FROM tbl_employee WHERE (last_name = ? AND age = ?)
  2. Parameters: Tom(String), 22(Integer)
  3. Updates: 1

文章转载至:https://blog.csdn.net/lizhiqiang1217/article/details/89738906

MyBatis:MyBatis-Plus条件构造器EntityWrapper的更多相关文章

  1. mybatis plus的条件构造器

    我们在使用条件构造器的时候要使用QueryWrapper或者UpdateWrapper来充当条件语句来进行构造 QueryWrapper(LambdaQueryWrapper) 和 UpdateWra ...

  2. mybatis按datetime条件查询,参数为时间戳时

    mybatis按datetime条件查询,参数为时间戳时,如果数据库为2018-1-1 20:22:10, 你的时间戳也为2018-1-1 20:22:10,但却没找到数据.可能是时差导致的.百度修正 ...

  3. mybatis动态拼接条件的技巧 where 1=1 或者where标签

    /**     * 根据输入的学生信息进行条件检索     * 1. 当只输入用户名时, 使用用户名进行模糊检索:     * 2. 当只输入邮箱时, 使用性别进行完全匹配     * 3. 当用户名 ...

  4. 小书MybatisPlus第2篇-条件构造器的应用及总结

    一.条件构造器Wrapper Mybatis Plus为我们提供了如下的一些条件构造器,我们可以利用它们实现查询条件.删除条件.更新条件的构造. 条件构造器用于给如下的Mapper方法传参,通常情况下 ...

  5. MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解

    性能分析插件 我们在平时的开发中,会遇到一些慢sql,测试,druid MP(MyBatisPlus)也提供性能分析插件,如果超过这个时间就停止 不过官方在3.2版本的时候取消了,原因如下 条件构造器 ...

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

    一.Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减. 二.构造器UML图(3.0.3)-----实体包装器,主要用 ...

  7. (转)MyBatis & MyBatis Plus

    (二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...

  8. springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用

    百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...

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

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

随机推荐

  1. Spring IoC容器 XML 配置与加载

    IoC 容器 XML 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...

  2. VFB FEEDBACK

  3. brk 和 sbrk 区别

    转自:https://www.cnblogs.com/chengxuyuancc/p/3566710.html brk和sbrk的定义,在man手册中定义了这两个函数: 1 #include < ...

  4. 第13讲 | 套接字Socket:Talk is cheap, show me the code

    第13讲 | 套接字Socket:Talk is cheap, show me the code 基于 TCP 和 UDP 协议的 Socket 编程.在讲 TCP 和 UDP 协议的时候,我们分客户 ...

  5. Win10 安装 Python3 (上)

    Python3 For Windows 10 installer 参考 The full installer 安装 随后可以看到,installer 在用户环境变量PATH中,添加了三项: 卸载 使用 ...

  6. Elasticsearch常用DSL关键字

    Elasticsearch常用DSL关键字 query: 用于包含查询使用到的语法 match_all: 最简单的查询,获取索引所有数据,类似搜索 *.如:"query":{&qu ...

  7. Jenkins-java项目自动发布

    path="${WORKSPACE}/git" # 创建目录 if [ -d $path ]; then echo "The files is already exist ...

  8. SOLO: 按位置分割对象

    SOLO: 按位置分割对象 SOLO: Segmenting Objectsby Locations 论文链接: https://arxiv.org/pdf/1912.04488.pdf 代码链接: ...

  9. TensorFlow损失函数

    TensorFlow损失函数 正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本文将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. ...

  10. 中继TensorRT集成

    中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...