Mybatis Plus是Mybatis 增强版工具
- 已经封装好一些crud方法,不需再写xml,直接调用这些方法即可。
如果集成mybatis-plus,就把mybatis、mybatis-spring去掉,避免冲突
pom.xml
1 | <dependency> |
entity
1 |
|
mapper
不需要写xml映射,不需要定义任何接口方法。
1 | public interface EmplopyeeDao extends BaseMapper<Employee> { |
crud操作
- 大部分单表 CRUD 操作,仅仅需要继承一个 BaseMapper 即可实现。
- 复杂CRUD操作,使用条件构造器: EntityWrapper 或 Condition。
基本crud操作
增
1 | //insert 可以拿到insert之后的记录id |
删
1 | // deleteById 根据id删除 |
改
1 | //updateById 根据id进行更新,只更新传值的属性,没有传值的属性就不会更新 |
查
1 | // selectById 只根据一个id,查询一条 |
条件构造器crud
使用MyBatis : 需要在 SQL 映射文件中编写带条件查询的 SQL,并用PageHelper 插件完成分页. 实现以上一个简单的需求,往往需要我们做很多重复单调的工作。
使用MybatisPlus: 依旧不用编写 SQL 语句,MP 提供了功能强大的条件构造器。
条件构造器:
- Condition:调create方法创建出来,Condition.create()
- EntityWrapper:是new出来的,new EntityWrapper<>()
查
1 | // 分页查询 selectPage |
改
1 | // update 根据条件EntityWrapper,只更新明文设置的属性 |
删
1 | // delete 把符合条件的全部删除 |
ActiveRecord
AR是一种领域模型。领域模型的特点是一个模型类对应关系型数据库中的一个表,模型类的一个实例对应表中的一行记录。
所谓AR操作,是通过对象本身调用相关方法,比如要insert一个user,那就用这个user调用insert方法即可user.insert()
。
MPlus 实现了只需要让实体类继承 Model 类且实现主键指定方法,即可使用AR。
步骤1:让实体类继承 Model 类,并实现指定主键的方法
1 |
|
步骤2:虽然AR模式用不到该接口,但是一定要定义,否则使用AR时会报空指针异常。1
2public interface UserDao extends BaseMapper<User> {
}
步骤3:
可看到,不需要引入mapper接口(UserDao),就可以直接使用insert方法!不过,虽然不需要引入,但还是要定义,否则会报错。
user.insert();
就是AR的写法,可以看到返回值为布尔类型。
1 | User user = new User(); |
特殊用法
逻辑删除
1 | //标记逻辑删除属性 |
填充默认值
1 | "now()") // 插入时,填充now() (fill = FieldFill.INSERT, update = |
枚举
1 | // 调用 |
枚举序列化(翻倍入库)
1 | // springboot + jackson为例 |
字段类型处理器
类型处理器:
- 用于 JavaType 与 JdbcType 之间的转换
用于 PreparedStatement 设置参数值和从 ResultSet 或 CallableStatement 中取出一个值。
mybaits-plus
内置常用类型处理器,通过TableField
注解快速注入到mybatis
容器中。
插件
分页插件:
BaseMapper的selectPage方法和AR提供的selectPage方法都不是物理分页,需要配置分页插件后才是物理分页
1 | //配置了分页插件后,还是和以前一样的使用selectpage方法, |
数据库框架:Mybatis Plus > Mybatis
代码生成器:Mybatis Plus Generator > Mybatis Generator