MyBatis:MyBatis-Plus条件构造器EntityWrapper
EntityWrapper 简介
- 1、 MybatisPlus 通过 EntityWrapper(简称 EW,MybatisPlus 封装的一个查询条件构造器)或者 Condition(与 EW 类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担, 能够有效提高开发效率。
- 2、实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等。
- 3、注意: 使用的是数据库字段,不是 Java 属性。
- 4、条件参数说明:
查询测试
- @Test
- public void testEntityWrapperSelect() {
- 1. //我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
- List<Employee> emps =employeeMapper.selectPage(new Page<Employee>(1, 2),
- new EntityWrapper<Employee>()
- .between("age", 18, 50)
- .eq("gender", 1)
- .eq("last_name", "Tom")
- );
- System.out.println(emps);
- 2. //我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
- List<Employee > emps3 = employeeMapper.selectPage(
- new Page<Employee>(1,2),
- Condition.create()
- .between("age", 18, 50)
- .eq("gender", "1")
- .eq("last_name", "Tom")
- );
- System.out.println(emps3);
- 3. // 查询tbl_employee表中, 性别为女并且名字中带有"老师" 或者 邮箱中带有"a"
- List<Employee> emps1 = employeeMapper.selectList(
- new EntityWrapper<Employee>()
- .eq("gender", 0)
- .like("last_name", "老师")
- //.or() // SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?)
- .orNew() // SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
- .like("email", "a")
- );
- System.out.println(emps1);
- 4. //查询性别为女的, 根据age进行排序(asc/desc), 简单分页
- List<Employee> emps2 = employeeMapper.selectList(
- new EntityWrapper<Employee>()
- .eq("gender", 0)
- .orderBy("age") //默认是升序
- //.orderDesc(Arrays.asList(new String [] {"age"}))
- .last("desc limit 1,3") //在sql最后拼接
- );
- System.out.println(emps2);
- }
日志输出:
- selectPage方法:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
- Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
- Total: 1
- [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22]]
- selectPage使用Condition:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
- Parameters: 18(Integer), 50(Integer), 1(String), Tom(String)
- Total: 1
- [Employee [id=1, lastName=Tom, email=tom@atguigu.com, gender=1, age=22]]
- selectList使用or:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ? OR email LIKE ?)
- Parameters: 0(Integer), %老师%(String), %a%(String)
- Total: 3
- [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]]
- selectList使用orNew:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
- Parameters: 0(Integer), %老师%(String), %a%(String)
- Total: 3
- [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]]
selectList使用orderBy:- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age
- Parameters: 0(Integer)
- Total: 2
- [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]]
- selectList使用orderDesc:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age DESC
- Parameters: 0(Integer)
- Total: 2
- [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]]
- selectList使用last:
- Preparing: SELECT id AS id,last_name AS lastName,email,gender,age FROM tbl_employee WHERE (gender = ?) ORDER BY age desc limit 1,3
- Parameters: 0(Integer)
- Total: 1
- [Employee [id=7, lastName=王五, email=xz@sina.com, gender=0, age=null]]
修改测试
- @Test
- public void testEntityWrapperUpdate() {
- Employee employee = new Employee();
- employee.setLastName("王五");
- employee.setEmail("cls@sina.com");
- employee.setGender(0);
- employeeMapper.update(employee,
- new EntityWrapper<Employee>()
- .eq("last_name", "Tom")
- .eq("age", 44)
- );
- }
日志输出:
- Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE (last_name = ? AND age = ?)
- Parameters: 王五(String), cls@sina.com(String), 0(Integer), Tom(String), 44(Integer)
- Updates: 0
删除测试
- @Test
- public void testEntityWrapperDelete() {
- employeeMapper.delete(
- new EntityWrapper<Employee>()
- .eq("last_name", "Tom")
- .eq("age", 22)
- );
- }
日志输出:
- Preparing: DELETE FROM tbl_employee WHERE (last_name = ? AND age = ?)
- Parameters: Tom(String), 22(Integer)
- Updates: 1
文章转载至:https://blog.csdn.net/lizhiqiang1217/article/details/89738906
MyBatis:MyBatis-Plus条件构造器EntityWrapper的更多相关文章
- mybatis plus的条件构造器
我们在使用条件构造器的时候要使用QueryWrapper或者UpdateWrapper来充当条件语句来进行构造 QueryWrapper(LambdaQueryWrapper) 和 UpdateWra ...
- mybatis按datetime条件查询,参数为时间戳时
mybatis按datetime条件查询,参数为时间戳时,如果数据库为2018-1-1 20:22:10, 你的时间戳也为2018-1-1 20:22:10,但却没找到数据.可能是时差导致的.百度修正 ...
- mybatis动态拼接条件的技巧 where 1=1 或者where标签
/** * 根据输入的学生信息进行条件检索 * 1. 当只输入用户名时, 使用用户名进行模糊检索: * 2. 当只输入邮箱时, 使用性别进行完全匹配 * 3. 当用户名 ...
- 小书MybatisPlus第2篇-条件构造器的应用及总结
一.条件构造器Wrapper Mybatis Plus为我们提供了如下的一些条件构造器,我们可以利用它们实现查询条件.删除条件.更新条件的构造. 条件构造器用于给如下的Mapper方法传参,通常情况下 ...
- MyBatisPlus性能分析插件,条件构造器,代码自动生成器详解
性能分析插件 我们在平时的开发中,会遇到一些慢sql,测试,druid MP(MyBatisPlus)也提供性能分析插件,如果超过这个时间就停止 不过官方在3.2版本的时候取消了,原因如下 条件构造器 ...
- Mybatis-Plus 实战完整学习笔记(九)------条件构造器核心用法大全(上)
一.Mybatisplus通用(公共方法)CRUD,一共17种(3.0.3版),2.3系列也是这么多,这个新版本一定程度进行了改造和删减. 二.构造器UML图(3.0.3)-----实体包装器,主要用 ...
- (转)MyBatis & MyBatis Plus
(二期)3.mybatis与mybatis plus [课程三]mybatis ...运用.xmind0.1MB [课程三]mybatis...机制.xmind0.2MB [课程三]mybatis与j ...
- springmvc 项目完整示例04 整合mybatis mybatis所需要的jar包 mybatis配置文件 sql语句 mybatis应用
百度百科: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBat ...
- Mybatis-Plus 实战完整学习笔记(十一)------条件构造器删除,修改,conditon
1.修改功能--其他过滤方式跟select一样 /** * 修改条件构造器 * @throws SQLException */ @Test public void selectUpdate() thr ...
随机推荐
- Spring IoC容器 XML 配置与加载
IoC 容器 XML 配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&qu ...
- VFB FEEDBACK
- brk 和 sbrk 区别
转自:https://www.cnblogs.com/chengxuyuancc/p/3566710.html brk和sbrk的定义,在man手册中定义了这两个函数: 1 #include < ...
- 第13讲 | 套接字Socket:Talk is cheap, show me the code
第13讲 | 套接字Socket:Talk is cheap, show me the code 基于 TCP 和 UDP 协议的 Socket 编程.在讲 TCP 和 UDP 协议的时候,我们分客户 ...
- Win10 安装 Python3 (上)
Python3 For Windows 10 installer 参考 The full installer 安装 随后可以看到,installer 在用户环境变量PATH中,添加了三项: 卸载 使用 ...
- Elasticsearch常用DSL关键字
Elasticsearch常用DSL关键字 query: 用于包含查询使用到的语法 match_all: 最简单的查询,获取索引所有数据,类似搜索 *.如:"query":{&qu ...
- Jenkins-java项目自动发布
path="${WORKSPACE}/git" # 创建目录 if [ -d $path ]; then echo "The files is already exist ...
- SOLO: 按位置分割对象
SOLO: 按位置分割对象 SOLO: Segmenting Objectsby Locations 论文链接: https://arxiv.org/pdf/1912.04488.pdf 代码链接: ...
- TensorFlow损失函数
TensorFlow损失函数 正如前面所讨论的,在回归中定义了损失函数或目标函数,其目的是找到使损失最小化的系数.本文将介绍如何在 TensorFlow 中定义损失函数,并根据问题选择合适的损失函数. ...
- 中继TensorRT集成
中继TensorRT集成 介绍 NVIDIA TensorRT是用于优化深度学习推理的库.这种集成将使尽可能多的算子从Relay转移到TensorRT,从而无需调整调度,即可在NVIDIA GPU上提 ...