完美的输出打印 SQL 及执行时长[MyBatis-Plus系列]

时间:2024-10-30 20:02:18

图片

导读

Hi,大家好,我是悟纤。过着爱谁谁的生活,活出不设限的人生。

在我们日常开发工作当中,避免不了查看当前程序所执行的SQL语句,以及了解它的执行时间,方便分析是否出现了慢SQL问题。

MyBatis-Plus提供了两种SQL分析打印的方式,用于输出每条SQL语句及其执行时间,针对执行较长时间的SQL可以停止运行,有助于发现问题。

这两种方式只适用于开发环境,因为这些工具都是有性能损耗的,所以不建议生产环境使用

因为​​PerformanceInterceptor​​插件在MyBatis-Plus3.2.0以上版本移除了,所以这里我们只介绍MyBatis-Plus官网推荐的方式。

一、p6spy 组件的使用

p6spy是针对数据库访问操作的动态监测框架(开源项目)它使得数据库数据可无缝截取和操纵,而不必对现有应用程序的代码作任何修改。常见集成p6spy的方式是在资源目录下新增配置文件,然后通过驱动装载。

1.1 添加依赖​​p6spy

在文件中,添加依赖​​p6spy

  1. <dependency>
  2. <groupId>p6spy</groupId>
  3. <artifactId>p6spy</artifactId>
  4. <version>3.9.1</version>
  5. </dependency>

1.2 添加驱动配置

在配置文件进行数据库驱动的配置:

  1. -class-name = 66SpyDriver
  2. =jdbc:p6spy:mysql://localhost:3306/mybatis-plus-demo

配置文件中,要设置使用​​p6spy​​​的驱动,并且​​url​​​也要加上​​p6spy​​,其它的配置不用修改。

1.3 添加配置文件​​

再在​​resources​​​文件夹下创建​​p6spy​​​的配置文件​​​​

  1. #3.2.1以上使用
  2. modulelist=6,66OutageFactory
  3. #3.2.1以下使用或者不配置
  4. #modulelist=66LogFactory,66OutageFactory
  5. # 自定义日志打印
  6. logMessageFormat=66SpyLogger
  7. #日志输出到控制台
  8. appender=6
  9. # 使用日志系统记录 sql
  10. #appender=64JLogger
  11. # 设置 p6spy driver 代理
  12. deregisterdrivers=true
  13. # 取消JDBC URL前缀
  14. useprefix=true
  15. # 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
  16. excludecategories=info,debug,result,commit,resultset
  17. # 日期格式
  18. dateformat=yyyy-MM-dd HH:mm:ss
  19. # 实际驱动可多个
  20. #driverlist=2.Driver
  21. # 是否开启慢SQL记录
  22. outagedetection=true
  23. # 慢SQL记录标准 2
  24. outagedetectioninterval=2

1.4 测试

测试执行SQL,然后查看控制台信息:

小结

本节介绍了MP的p6spy组件的使用,对于p6spy的主要步骤如下:

(1)在文件中添加p6spy的依赖。

(2)修改的数据源驱动配置。

(3)添加的配置文件。

注意点:该插件有性能损耗,不建议生产环境使用