MybatisPlus QueryWrapper(简称 QW,MP 封装的一个查询条件构造器)的使用和简单认识
上一篇讲的是MybatisPlus的MP注解用法和简单介绍 传送门
(跟上一篇是同一个项目)先来创一个Springboot测试项目
创建一个数据库
-- 创建表
CREATE TABLE t_employee(id INT(11) PRIMARY KEY AUTO_INCREMENT,user_name VARCHAR(50),email VARCHAR(50),gender CHAR(1),age INT
);
INSERT INTO t_employee(user_name,email,gender,age) VALUES('Tom','tom@qq.com',1,22);
INSERT INTO t_employee(user_name,email,gender,age) VALUES('Jerry','jerry@qq.com',0,25);
INSERT INTO t_employee(user_name,email,gender,age) VALUES('Black','black@qq.com',1,30);
INSERT INTO t_employee(user_name,email,gender,age) VALUES('White','white@qq.com',0,35);
创建一个实体类
记得给get、set和tostring
//名称一致时,此注解可以省略
public class t_employee {//主键生成策略,value属性可选,当属性名与表中的列名不一致,必填private Integer id;//编号private String userName;//用户名private String email;//邮箱private Integer gender;//性别private Integer age;//年龄...记得给get、set和tostring
Mapper接口
在dao包下创建EmployeeMapper接口,继承BaseMapper接口,不用编写xml映射文件
public interface EmployeeMapper extends BaseMapper<Employee> {}
条件构造器
构造器简介
Mybatis-Plus 通过 QueryWrapper(简称 QW,MP 封装的一个查询条件构造器)来让用户自由的构建查询条件,简单便捷,没有额外的负担, 能够有效提高开发效率
实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等
注意: 使用的是
数据库表字段
,不是 Java 属性!
条件参数
具体条件参数详细用法可参考MP官方文档
https://mp.baomidou.com/guide/wrapper.html
delete删除操作
MP删除的方法
具体参考BaseMapper接口源码
/*** 根据 ID 删除** @param id 主键ID*/int deleteById(Serializable id);/*** 根据 columnMap 条件,删除记录** @param columnMap 表字段 map 对象*/int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,删除记录** @param wrapper 实体对象封装操作类(可以为 null)*/int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);/*** 删除(根据ID 批量删除)** @param idList 主键ID列表(不能为 null 以及 empty)*/int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
MP删除的使用
deleteById()
根据id删除数据
@Test
public void testDeleteById(){//删除int count = employeeMapper.deleteById(8);if(count>0){System.out.println("删除成功");}else{System.out.println("删除失败");}
}
deleteByMap()
根据 columnMap 条件,删除记录
@Test
public void testDeleteByMap(){Map<String,Object> map = new LinkedHashMap<String, Object>();//指定条件列,key为数据库表中的列名map.put("user_name","lucy");map.put("gender",1);//删除int count = employeeMapper.deleteByMap(map);if(count>0){System.out.println("删除成功");}else{System.out.println("删除失败");}
}
delete()
根据 entity 条件,删除记录
@Test
public void testDelete(){//创建条件构造器对象QueryWrapper<Employee> wrapper = new QueryWrapper<Employee>();//指定条件,key为数据库表中的列名wrapper.eq("id",5);//删除int count = employeeMapper.delete(wrapper);if(count>0){System.out.println("删除成功");}else{System.out.println("删除失败");}
}
deleteBatchIds()
删除(根据ID 批量删除)
@Test
public void testDeleteBatchIds(){//删除int count = employeeMapper.deleteBatchIds(Arrays.asList(1,2,3));if(count>0){System.out.println("删除成功");}else{System.out.println("删除失败");}
}
update更新操作
MP更新的方法
具体方法参考源码BaseMapper接口
/*** 根据 ID 修改** @param entity 实体对象*/int updateById(@Param(Constants.ENTITY) T entity);/*** 根据 whereEntity 条件,更新记录** @param entity 实体对象 (set 条件值,可以为 null)* @param updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)*/int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
MP更新方法的使用
updateById()
根据 ID 修改
@Test
public void testUpdateById(){Employee employee = new Employee();employee.setUserName("王明");employee.setId(6);//修改int count = employeeMapper.updateById(employee);if(count>0){System.out.println("修改成功");}else{System.out.println("修改失败");}
}
update()
根据 whereEntity 条件,更新记录
@Test
public void testUpdate(){UpdateWrapper<Employee> wrapper = new UpdateWrapper<Employee>();wrapper.eq("id",6);//指定修改条件//修改员工数据Employee employee = new Employee();employee.setUserName("jason");//修改int count = employeeMapper.update(employee,wrapper);if(count>0){System.out.println("修改成功");}else{System.out.println("修改失败");}
}
select查询
MP查询的方法
列举MyBatisPlus常用的查询方法,具体可参考BaseMapper接口源码
/*** 根据 ID 查询** @param id 主键ID*/T selectById(Serializable id);/*** 查询(根据ID 批量查询)** @param idList 主键ID列表(不能为 null 以及 empty)*/List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);/*** 查询(根据 columnMap 条件)** @param columnMap 表字段 map 对象*/List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);/*** 根据 entity 条件,查询一条记录** @param queryWrapper 实体对象封装操作类(可以为 null)*/T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 Wrapper 条件,查询总记录数** @param queryWrapper 实体对象封装操作类(可以为 null)*/Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);/*** 根据 entity 条件,查询全部记录** @param queryWrapper 实体对象封装操作类(可以为 null)*/List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
MP查询方法的使用
selectById()
根据 ID 查询
@Test
public void testSelectById() {Employee employee = this.employeeMapper.selectById(1);System.out.println(employee);
}
selectBatchIds()
查询(根据ID 批量查询)
@Test
public void testSelectBatchIds() {//创建集合保存员工idList<Integer> idList = Arrays.asList(1,2,3);//批量查询(使用in()查询)List<Employee> list = this.employeeMapper.selectBatchIds(idList);for (Employee employee : list) {System.out.println(employee);}
}
selectByMap()
查询(根据 columnMap 条件)
@Test
public void testSelectByMap() {Map<String, Object> map = new HashMap<String, Object>();map.put("id", 1);List<Employee> list = this.employeeMapper.selectByMap(map);for (Employee employee : list) {System.out.println(employee);}
}
selectOne()
根据 entity 条件,查询一条记录
注意:最多只能返回1条记录
@Testpublic void testSelectOne() {//创建条件构造器QueryWrapper<Employee> queryWrapper = new QueryWrapper<Employee>();//指定条件,key为表字段queryWrapper.eq("id", 1);//返回的结果最多1条,返回多条记录会报错Employee employee = this.employeeMapper.selectOne(queryWrapper);System.out.println(employee);}
selectCount()
根据 Wrapper 条件,查询总记录数
@Test
public void testSelectCount() {//创建条件构造器QueryWrapper<Employee> queryWrapper = new QueryWrapper<Employee>();//指定条件,key为表字段queryWrapper.like("user_name", "t");//总数量int count = this.employeeMapper.selectCount(queryWrapper);System.out.println("总数量:"+count);
}
selectList()
根据 entity 条件,查询全部记录
@Test
public void testSelectList() {//创建条件构造器QueryWrapper<Employee> queryWrapper = new QueryWrapper<Employee>();//指定条件,key为表字段queryWrapper.like("user_name", "c");queryWrapper.ge("age", 20);List<Employee> list = this.employeeMapper.selectList(queryWrapper);for (Employee employee : list) {System.out.println(employee);}
}
具体条件参数详细用法可参考MP官方文档
https://mp.baomidou.com/guide/wrapper.html
这篇太长了 放不下了
下一篇是<MybatisPlus自定义SQL查询及分页查询>
MybatisPlus QueryWrapper(简称 QW,MP 封装的一个查询条件构造器)的使用和简单认识相关推荐
- Druid拦截sql语句,实现在添加一个查询条件
Druid拦截sql语句,实现在添加一个查询条件 这里就不详细描述原理了. 首先需要重写一下FilterEventAdapter里的connection_prepareStatement方法,然后对s ...
- Oracle: SQL组合不同字段作为一个查询条件
前端程序传过来的值是有三个字段组合之后的结果,后端程序处理,并且将查询的数据反馈给前端. PS:不能直接使用字段RPT_NO的,因为在这条记录中RPT_NO恰好等于其他三个字段的组合值. 正确的做法是 ...
- 在后台增加一个查询条件
1.返回page列表数据的ServiceImpl @Service("userResumeService") public class UserResumeServiceImpl ...
- MP条件构造器Wrapper
5.1 概述 我们在实际操作数据库的时候会涉及到很多的条件.所以MP为我们提供了一个功能强大的条件构造器 Wrapper .使用它可以让我们非常方便的构造条件. 其继承体系如下: 在其子类Ab ...
- 【MyBatis-Plus】第二章 条件构造器
第二章 条件构造器 文章目录 第二章 条件构造器 一.继承关系 二.SQL 拼接方法 1.AbstractWrapper 定义 2.QueryWrapper 定义 3.UpdateWrapper 定义 ...
- Springboot中对jpa动态查询条件的封装
jpa对于固定参数的条件查询比较简单,可以在Repository中直接用参数名来查询.但是对于不固定的参数查询就比较麻烦了,官方提供的是继承JpaSpecificationExecutor,然后自己拼 ...
- elk7.7.1【系列十六】java 封装 kql 查询条件
src_ip.keyword : 192.168.31.1 and category.keyword : "其他僵尸网络通信" => BoolQueryBuild ...
- 关于MybatisPlus的QueryWrapper定义查询条件的and()和or()方法连用问题
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生.它提供了QueryWrapper自定义查询对象,可以无 ...
- MyBatisPlus又在搞事了!一个依赖轻松搞定权限问题!堪称神器
前言: 今天介绍一个 MyBatis - Plus 官方发布的神器:mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计.数据敏感词过滤(AC算法),字段加密,字典回写(数据绑定), ...
最新文章
- CentOS 设置网络(修改IP 网关 DNS)上网
- 【Sass】+【Compass】学习笔记
- python学习详解_深入解析Python小白学习【操作列表】
- duck typing java_编程语言中的鸭子类型 Duck Typing
- SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送)
- 关于js复制文本信息(按钮级别)
- Visual Studio 2008在设计视图和代码视图切换的快捷键F7
- yuki翻译器钩子_git hooks钩子
- 使用Python预处理机器学习需要的手写体数字图像文件数据集
- [Ext JS6]Sencha Cmd
- 很多人认为自己赚不到钱是因为没钱,真的是这样吗?
- 针对利用tzselect修改时间及ln -sf 修改系统时间不好使的情况 linux 6.5
- Python - 安装sentencepiece异常
- 将心比心,我要有点骨气
- openGL 深度测试与透明度设置
- 如果一个人没有明确的目标,他的人生就像是一艘没有罗盘的船
- 计算机图形学 裁剪算法源代码,OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc...
- 【Oracle Hint】Oracle Hint学习笔记【一】
- photoshop插件制作_使用Photoshop更快地制作全景
- 【在线图表生成】掌握这些图表,年终报表根本不用愁!