Mybatis什么都好,就是不能打印完整的SQL语句,虽然可以根据数据来判断一二,但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行,带来了不便。
怎么说呢不管用其他什么方式来实现完整语句,都始终不是Mybatis真实的语句替换。Mybatis自己不做这事,那就只能自己实现了,然而实现的结果却不是那么准确。
这款p6spy算是里面专业一点的。
p6spy打印完整Mybatis的SQL语句
pom.xml
<!-- 用于打印完整mybatis语句-->
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.0</version>
<scope>provided</scope>
</dependency>
application.yml
spring:
datasource:
##================================================
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
username: root
password: 123
spy.properties
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,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
p6spy 建议在开发环境使用,生产不使用。
(1)数据源配置放在application-dev.yml
(2)依赖scope用provided类型。
(3)spy.properties就放着不影响