文章目录
- 一、前言
- 二、插件
- 1、逻辑删除
- 1.1、官方说明:
- 1.2、配置依赖
- 1.3、配置全局配置
- 1.4、实体类字段上添加@TableLogic注解
- 1.5、验证是否成功
- 2、执行SQL分析打印
- 2.1、配置依赖
- 2.2、数据库驱动配置
- 2.3、spy配置文件配置
- 2.4、注意事项
- 三、总结提升
一、前言
本文将介绍mybatisplus中的其余插件,主要包括逻辑删除插件、执行SQL分析打印插件、代码生成器插件的相关使用及介绍说明。
二、插件
1、逻辑删除
1.1、官方说明:
只对自动注入的 sql 起效:
- 插入: 不作限制
- 查找: 追加 where 条件过滤掉已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 更新: 追加 where 条件防止更新到已删除数据,如果使用 wrapper.entity 生成的 where 条件也会自动追加该字段
- 删除: 转变为 更新
例如: - 删除:
update user set deleted=1 where id = 1 and deleted=0
- 查找:
select id,name,deleted from user where deleted=0
- 字段类型支持说明:
支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime),如果数据库字段使用datetime,逻辑未删除值和已删除值支持配置为字符串null,另一个值支持配置为函数来获取值如now()
1.2、配置依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version></dependency>
如果已经引入,可以忽略此操作。
1.3、配置全局配置
mybatis-plus:global-config:db-config:logic-delete-field: is_delete # 全局逻辑删除的实体字段名logic-delete-value: 1 #逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
1.4、实体类字段上添加@TableLogic注解
1.5、验证是否成功
查看数据库中的记录,看到有两条is_delete为1的数据,也就是说我们在查询user表的时候只能查询出3条记录;
看结果,可以看到查询结果只查询出了三条记录,而我们使用的IService接口提供list方法;
该方法没有任何条件限制,会返回表中所有数据,而我们添加逻辑删除插件配置之后,不需要where is_delete = 0 的条件也能只查询出未删除的数据;
2、执行SQL分析打印
在开发的过程中,总希望方法执行完了可以看到完整是sql语句,从而判断执行的是否正确,所以就希望有一个可以打印sql语句的插件。p6spy就是一款针对数据库访问操作的动态监控框架,他可以和数据库无缝截取和操纵,而不必对现有应该用程序的代码做任何修改,此插件还可以用来检测慢SQL。
2.1、配置依赖
<dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>3.9.1</version>
</dependency>
2.2、数据库驱动配置
注意:这里我们使用p6spy插件之后我们的driver-class-name要使用P6SpyDriver
url中要添加上p6spy
spring:datasource:url: jdbc:p6spy:mysql://localhost:3306/mengjieusername: rootpassword: 123456driver-class-name: com.p6spy.engine.spy.P6SpyDriver
2.3、spy配置文件配置
#3.2.1以上使用
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
#3.2.1以下使用或者不配置
#modulelist=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2
配置完之后,来验证一下是否可用,写一个controller接口,
执行一下,看控制台的日志信息打印:
2.4、注意事项
- driver-class-name 为 p6spy 提供的驱动类
- url 前缀为 jdbc:p6spy 跟着冒号为对应数据库连接地址
- 打印出 sql 为 null,在 excludecategories 增加 commit
- 批量操作不打印 sql,去除 excludecategories 中的 batch
- 批量操作打印重复的问题请使用 MybatisPlusLogFactory (3.2.1 新增)
- 该插件有性能损耗,不建议生产环境使用。
三、总结提升
MyBatis-Plus 的逻辑删除插件和执行 SQL 分析打印插件都为开发者提供了便利,提高了开发效率和调试方便性。
逻辑删除插件使得数据的逻辑删除操作更加灵活,符合现实业务需求,同时也避免了直接删除数据可能引发的数据丢失问题。
执行 SQL 分析打印插件则为开发者提供了一种快速分析 SQL 语句执行情况的方式,方便调试和性能优化。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。