官方文档:简介 | MyBatis-Plus (baomidou.com)
1. 使用基本流程
1. 继承BaseMapper后,可调用其中的最基本crud方法(需在po对象类中指定表名)
2. 当要使用到条件更新时,可使用Wrapper:QueryWrapper、UpdateWrapper使用它们来设置条件,然后执行调用对应的函数来执行对已经的操作。
3. MP提供了多种查询操作,包括根据id查询、批量查询、查询单条数据、查询列表、分页查询等操作。
2. mp中的常用注解
使用反射技术来对应数据库中表信息
@TableName,用于注定该数据模型类对应数据库哪张表
@TableId,用于指定该表中对应数据模型类中的主键id,type属性,里面的IdType枚举不写默认为雪花算法的那个方式来自动插入id,当将IdType设置为AUTO时,不需要填写主键字段,即可自动增长来填写
@TableFiled,用于将不符合mp命名规范的字段与数据库中真实字段对应起来
(1.当变量名与数据库关键字冲突时,需要加上''单引号来转义该字段
2. 成员变量不是数据库字段时,@TableFiled中应写exist = false)
3. 条件构造器
主要两个wrapper,因为光是继承BaseMapper不能满足复杂SQL需要。里面有个setSql()方法。
推荐使用最下面两个wrapper。使用最下面两个wrapper时,可以避免硬编码。类似于编写SQL。
4. 自定义SQL
5. Service接口基本用法
实现类中在继承时,需指定对应的mapper文件和对应的实体。
在Iservice的实现类ServiceImpl中有自动注入private M baseMapper; 实际上底层还是调用的baseMapper的很多方法。
6. IService的Lambda用法
还有一个LambdaUpdate方法,较复杂的查询和更新建议使用。
使用重载后的条件方法中的bool condition参数,填入情况。如上。
IService中的lambdaQuery方法
可直接调用,不需要new出wrapper
7. IService批量新增
使用for循环来调用基础方法save批量新增是最慢的
效率很高 saveBatch()方法。使用的预编译语句,但是是多条SQL语句同时执行,一次性操作。
如果要将该操作变成上图所示效率最高的方式,则需要在配置文件中开启rewriteBatchedStatements=true参数。
在jdbc的url中添加这个参数就行。
8. 代码生成器
下载插件MybatisPlus(以动漫女生为图标的)。
9. 扩展功能-DB静态工具
里面为静态方法,需要传递实体类的Class文件字节码。
在service需要相互注入的时候比较好用。可以减少代码的耦合度。
从获取到的用户中提取id列表。
10. 逻辑删除
数据库中多一个deleted字段,做更新操作。
在查询时,加上这个条件deleted=0,表示未逻辑删除的数据。
11. 枚举处理器
比如在用户实体中有个字段status,表示用户状态,当需要使用该字段时,可以通过枚举的形式
将这个字段的类型设置为自定义的枚举类型。
1. 给枚举类的成员变量加上@EnumValue注解
@JsonValue注解用来表示SpringMVC返回该字段给前端。
2. 在yml文件中配置
12. Json处理器
第一步,在po类中的对应数据库中Json类型的字段加上@TableFiled注解@TableFiled(typeHandler = JacksonTypeHandler.class)并在前面的注解@TableName中添加autoResultMap = true。
13. 分页插件用法
继承关系:
很方便,直接调用page方法就行。
未完,后续其他大佬章节: