上一篇讲的是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 封装的一个查询条件构造器)的使用和简单认识相关推荐

  1. Druid拦截sql语句,实现在添加一个查询条件

    Druid拦截sql语句,实现在添加一个查询条件 这里就不详细描述原理了. 首先需要重写一下FilterEventAdapter里的connection_prepareStatement方法,然后对s ...

  2. Oracle: SQL组合不同字段作为一个查询条件

    前端程序传过来的值是有三个字段组合之后的结果,后端程序处理,并且将查询的数据反馈给前端. PS:不能直接使用字段RPT_NO的,因为在这条记录中RPT_NO恰好等于其他三个字段的组合值. 正确的做法是 ...

  3. 在后台增加一个查询条件

    1.返回page列表数据的ServiceImpl @Service("userResumeService") public class UserResumeServiceImpl ...

  4. MP条件构造器Wrapper

    5.1 概述 我们在实际操作数据库的时候会涉及到很多的条件.所以MP为我们提供了一个功能强大的条件构造器 Wrapper .使用它可以让我们非常方便的构造条件. ​ 其继承体系如下: ​ 在其子类Ab ...

  5. 【MyBatis-Plus】第二章 条件构造器

    第二章 条件构造器 文章目录 第二章 条件构造器 一.继承关系 二.SQL 拼接方法 1.AbstractWrapper 定义 2.QueryWrapper 定义 3.UpdateWrapper 定义 ...

  6. Springboot中对jpa动态查询条件的封装

    jpa对于固定参数的条件查询比较简单,可以在Repository中直接用参数名来查询.但是对于不固定的参数查询就比较麻烦了,官方提供的是继承JpaSpecificationExecutor,然后自己拼 ...

  7. elk7.7.1【系列十六】java 封装 kql 查询条件

    src_ip.keyword : 192.168.31.1 and category.keyword : "其他僵尸网络通信"    =>    BoolQueryBuild ...

  8. 关于MybatisPlus的QueryWrapper定义查询条件的and()和or()方法连用问题

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生.它提供了QueryWrapper自定义查询对象,可以无 ...

  9. MyBatisPlus又在搞事了!一个依赖轻松搞定权限问题!堪称神器

    前言: 今天介绍一个 MyBatis - Plus 官方发布的神器:mybatis-mate 为 mp 企业级模块,支持分库分表,数据审计.数据敏感词过滤(AC算法),字段加密,字典回写(数据绑定), ...

最新文章

  1. CentOS 设置网络(修改IP 网关 DNS)上网
  2. 【Sass】+【Compass】学习笔记
  3. python学习详解_深入解析Python小白学习【操作列表】
  4. duck typing java_编程语言中的鸭子类型 Duck Typing
  5. SpringBoot整合MQTT服务器实现消息的发送与订阅(推送消息与接收推送)
  6. 关于js复制文本信息(按钮级别)
  7. Visual Studio 2008在设计视图和代码视图切换的快捷键F7
  8. yuki翻译器钩子_git hooks钩子
  9. 使用Python预处理机器学习需要的手写体数字图像文件数据集
  10. [Ext JS6]Sencha Cmd
  11. 很多人认为自己赚不到钱是因为没钱,真的是这样吗?
  12. 针对利用tzselect修改时间及ln -sf 修改系统时间不好使的情况 linux 6.5
  13. Python - 安装sentencepiece异常
  14. 将心比心,我要有点骨气
  15. openGL 深度测试与透明度设置
  16. 如果一个人没有明确的目标,他的人生就像是一艘没有罗盘的船
  17. 计算机图形学 裁剪算法源代码,OpenGL计算机图形学梁友栋裁剪算法实验代码及运行结果.doc...
  18. 【Oracle Hint】Oracle Hint学习笔记【一】
  19. photoshop插件制作_使用Photoshop更快地制作全景
  20. 【在线图表生成】掌握这些图表,年终报表根本不用愁!

热门文章

  1. 线性代数 向量组 线性相关与表出 秩 解的关系总(一)
  2. 遇到程序员不修改bug时怎么办?我教你
  3. 华为数字化转型之道 结语 数字化转型的8个成功要素
  4. oracle为什么打开鼠标不见了,鼠标箭头突然不见了该怎么办呢?
  5. 服务器操作系统不能显示全屏,服务器窗口显示不全屏
  6. 数据库SQL实战-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息
  7. 死亡之谷 峨边黑竹沟
  8. 上传文件到服务器指令,上传文件到远程服务器的命令
  9. loadrunner监控mysql服务性能
  10. 聊聊我在阿里所经历的新零售业务商品中心微服务化的过程