Mybatis Plus 打印 SQL 语句(包含执行耗时)
一、前言
大家好,我是小哈。
在《快速入门》 小节中,我们已经使用 Mybatis Plus 对数据库进行了最简单的 CRUD 操作,但是在实际项目中,增删改查操作会更加复杂,接下来,我们将更加深入的学习 Mybatis Plus 的增删改查。
在这之前呢,我们先配置一下 Mybatis Plus 打印 SQL 功能(包括执行耗时),以方便我们更直观的学习 CRUD, 一方面可以了解到每个操作都具体执行的什么 SQL 语句, 另一方面通过打印执行耗时,也可以规避一些慢 SQL,提前做好优化。注意,生产环境不推荐打印执行 SQL,会有数据泄漏风险,仅推荐本地开发使用。
TIP : 此种方式为官方推荐,通过
p6spy
组件来实现完整的 SQL 打印。请使用 Mybatis Plus 3.1.0 以上版本。
二、引入依赖
Maven
<dependency>
<groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>最新版本</version> </dependency>
TIP: 最新版本 可在 Maven 仓库中查看,链接:https://mvnrepository.com/artifact/p6spy/p6spy
Gradle
compilegroup: 'p6spy', name: 'p6spy', version: '最新版本'
三、添加配置
3.1 第一步:修改 application.yml
配置文件
application.yml
配置文件:
spring:
datasource:
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 ...
注意:
driver-class-name
用p6spy
提供的驱动类;url
前缀为jdbc:p6spy
跟着冒号,后面对应数据库连接地址;
3.2 第二步:添加 p6spy
配置文件
然后在 resources
目录下添加 spy.properties
配置文件:
配置文件内容如下:
#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
四、看看打印效果
配置添加完成后,单元测试执行一条插入语句:
@Test
void testInsertUser() {
System.out.println(("----- 开始测试 mybatis-plus 插入数据 ------")); User user = User.builder() .name("犬小哈教程 www.quanxiaoha.com") .age(30) .gender(1) .build(); userMapper.insert(user); }
打印效果图如下,可以看到完整的打印了执行语句,以及执行耗时为 8ms:
五、注意点
p6spy
组件请勿在生产环境使用,因为有性能损耗,推荐仅本地开发开启使用。
六、结语
本文给大家介绍了在项目用使用 Mybatis Plus 持久层框架时,如何通过 p6spy
组件完整的打印 SQL 语句,以及执行耗时,此功能对于本地开发非常有帮助,有兴趣的小伙伴赶紧在自己的项目中集成一下吧。
所有评论(0)