当前位置: 首页 > news >正文

MybatisPlus插件篇—逻辑删除+p6spy

文章目录

  • 一、前言
  • 二、插件
    • 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 语句执行情况的方式,方便调试和性能优化。

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

http://www.lryc.cn/news/147149.html

相关文章:

  • Android studio中EditText设置默认值
  • 《Java面向对象程序设计》学习笔记——第 13 章 泛型与集合框架
  • python进阶--魔法方法之类的表示
  • JVM 创建对象时分配内存的几种方法、分配方法的选择
  • 08-Vue基础之组件
  • Kotlin学习之密封类
  • opencv鼠标事件函数setMouseCallback()详解
  • 硬件知识积累 USB 接口 type - A type - B type - C 的介绍与功能说明 (简单介绍)
  • 【LeetCode】290. 单词规律
  • 研磨设计模式day12迭代器模式
  • Python3不支持sqlite3的解决方法
  • Qt应用开发(基础篇)——消息对话框 QMessageBox
  • ETC reset
  • 2023年8月30日-[SWPUCTF 2021 新生赛]jicao
  • MariaDB数据库服务器
  • Nat. Mach. Intell 2023 | DrugBAN+:域自适应的可解释双线性插值网络改进药物-靶标预测(DTI)
  • org.springframework.web.reactive.function.server.ServerResponse设置响应头
  • 高频面试题:如何分别用三种姿势实现三个线程交替打印0到100
  • 【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤
  • FPGA SPI 驱动程序
  • 【实战】十一、看板页面及任务组页面开发(五) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十七)
  • mac m1 docker 安装kafka和zookeeper
  • 宏观经济和风电预测误差分析(Matlab代码实现)
  • GO学习之 搜索引擎(ElasticSearch)
  • Sentinel —实时监控
  • 接口优化通用方案
  • 用Visual Studio 2022的.map文件来查看C++变量在内存中的布局情况
  • 使用代理突破浏览器IP限制
  • HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)
  • 三、原型模式