MybatisPlus插件篇—逻辑删除+p6spy

一、前言

本文将介绍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/mengjie
    username: root
    password: 123456
    driver-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 语句执行情况的方式,方便调试和性能优化。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

猜你喜欢

转载自blog.csdn.net/wmj20001225/article/details/132581993