前言
还记得上一篇文章最后问到的一个问题吗? “我们仅仅需要继承一个 BaseMapper 即可实现大部分单表 CRUD 操作,难道这就是 MP 的强大之处了吗?”。No,No,No。请学习本篇文章,来了解更多的MP的强大之处!!!
需求问题
现有一个需求,我们需要分页查询 tbl_employee 表中,年龄在 18~50 之间性别为男且
姓名为 xx 的所有用户,这时候我们该如何实现上述需求呢?
MyBatis : 需要在 SQL 映射文件中编写带条件查询的 SQL,并基于 PageHelper 插件完成
分页. 实现以上一个简单的需求,往往需要我们做很多重复单调的工作。普通的 Mapper
能够解决这类痛点吗?
MP: 依旧不用编写 SQL 语句, MP 提供了功能强大的条件构造器 EntityWrapper。
一、EntityWrapper 简介
- Mybatis-Plus 通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者Condition(与 EW 类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担,能够有效提高开发效率。
- 实体包装器,主要用于处理 sql 拼接,排序,实体参数查询等
- 注意: 使用的是数据库字段,不是 Java 属性!
- 条件参数说明:
二、使用 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