基础使用#
使用步骤#
引入依赖
自己的mapper接口继承BaseMapper
我们可以看到(下图)baseMapper有着一系列的基础数据库操作

实体类配置#
MybatisPlus通过以下实现CRUD数据库表信息
•默认以类名驼峰转下划线作为表名
•默认把名为id的字段作为主键
•默认把变量名驼峰转下划线作为表的字段名
MybatisPlus的常用注解:
•@TableName:指定表名称及全局配置
•@TableId:指定id字段及相关配置
•@TableField:指定普通字段及相关配置
@TableField的常见场景:
•成员变量名与数据库字段名不一致
•成员变量名以is开头,且是布尔值
•成员变量名与数据库关键字冲突
•成员变量不是数据库字段
yaml配置#
1
2
3
4
| mybatis-plus:
#注册别名后,就不用在xml中写全路径名称了
type-aliases-package: com.itheima.mp.domain.po
# 其它很多配置都不用配置,使用默认值即可
|
mybatisPlus不仅实现了一些基础的单表查询mapper,甚至提供了service接口,借助该接口能够完成一些基础业务
IService#
通过一个接口和一个实现类来协调完成这些基础功能的实现


扩展插件#
逻辑删除#
直接再yaml中配置,配置完成后,原来删除方法如,deleteById,就会执行逻辑删除
1
2
3
4
5
6
7
8
9
| mybatis-plus:
global-config:
db-config:
# 逻辑删除字段名(在数据表中的)
logic-delete-field: deleted
# 逻辑已删除值(默认为 1)
logic-delete-value: 1
# 逻辑未删除值(默认为 0)
logic-not-delete-value: 0
|
JSON处理器#
能够将数据库中存储的json数据,解析为对象
步骤:1.注入字段使用注解;2.创建实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| @Data
@TableName(value = "user", autoResultMap = true)
public class User {
...
/**
* 详细信息
*/
@TableField(typeHandler = JacksonTypeHandler.class)
private Map<String, Object> info;
...
}
|
1
2
3
4
5
6
7
8
9
| @Data
@AllArgsConstructor(staticName = "of") //便于静态构造创建对象
@NoArgsConstructor
public class UserInfo {
private Integer age;
private String intro;
private String gender;
}
|
分页插件#
单独的分页插件依赖
1
2
3
4
5
| <dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser</artifactId>
<version>3.5.14</version>
</dependency>
|
配置基于拦截器的分页
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| package com.itheima.mp.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisConfig {
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
interceptor.addInnerInterceptor(pageInterceptor);
return interceptor;
}
}
|