前言

还记得上一篇文章最后问到的一个问题吗? “我们仅仅需要继承一个 BaseMapper 即可实现大部分单表 CRUD 操作,难道这就是 MP 的强大之处了吗?”。No,No,No。请学习本篇文章,来了解更多的MP的强大之处!!!

需求问题

现有一个需求,我们需要分页查询 tbl_employee 表中,年龄在 18~50 之间性别为男且
姓名为 xx 的所有用户,这时候我们该如何实现上述需求呢?
MyBatis : 需要在 SQL 映射文件中编写带条件查询的 SQL,并基于 PageHelper 插件完成
分页. 实现以上一个简单的需求,往往需要我们做很多重复单调的工作。普通的 Mapper
能够解决这类痛点吗?
MP: 依旧不用编写 SQL 语句, MP 提供了功能强大的条件构造器 EntityWrapper。

一、EntityWrapper 简介

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

二、使用 EntityWrapper 的方式

List<Employee> userList = employeeMapper.selectPage(
 			new Page<Employee>(2, 3),
 			new EntityWrapper<Employee>().eq("last_name", "MybatisPlus")
			.eq("gender", 1)
 			.between("age", 18, 50)
);

三、带条件的查询

List<T> selectList(@Param("ew") Wrapper<T> wrapper);

四、带条件的修改

Integer update(@Param("et") T entity, @Param("ew") Wrapper<T> wrapper);

五、带条件的删除

Integer delete(@Param("ew") Wrapper<T> wrapper);

六、使用 Condition 的方式

Condition 的方式与EntityWrapper的方式的区别是:Condition.create()方法帮着创建了new EntityWrapper()对象,不需要咱们自己创建了,更方便了!

List<Employee> userListCondition = employeeMapper.selectPage(
				new Page<Employee>(2,3), 
				Condition.create()
				.eq("gender", 1)
				.eq("last_name", "MyBatisPlus")
				.between("age", 18, 50));

七、小结

MP: EntityWrapper Condition 条件构造器
MyBatis MBG : xxxExample→Criteria : QBC( Query By Criteria)
Hibernate : 通用 Mapper

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐