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

mybatis打印完整的SQL,p6spy

介绍打印完成的SQL,会降低性能,不要在生产环境使用,我只是在本地,自己的代码中设置,不提交。主要是为了方便,在控制台看见SQL的时候,不用去拼接参数,可以直接复制出来执行。

配置方法

1. 

参考地址:聊聊如何利用p6spy进行sql监控-腾讯云开发者社区-腾讯云

1.引入依赖

   <dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId><version>${p6spy.version}</version></dependency>

2、切换项目中的jdbc驱动以及数据源

 spring:datasource:type: com.alibaba.druid.pool.DruidDataSource# 更换驱动driverClassName: ${DRIVER_CALSS_NAME:com.p6spy.engine.spy.P6SpyDriver}# 换地址url: ${DATASOURCE_URL:jdbc:p6spy:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai}username: ${DATASOURCE_USERNAME:root}password: ${DATASOURCE_PWD:123456}

3、 在resource目录下添加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这里需要修改为自己的
logMessageFormat=com.xxx.gpm.platform.config.CustomP6SpyLogger #日志输出到控制台
#appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql  ----  这里需要换成自己写的全包名类
#appender=com.p6spy.engine.spy.appender.Slf4JLogger这里需要修改自己的
appender=com.xxx.gpm.platform.config.CustomStdoutLogger# 设置 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

4、 自定义日志格式【可选】

package com.xxx.gpm.platform.config;import com.alibaba.fastjson.JSONObject;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;import java.util.LinkedHashMap;
import java.util.Map;public class CustomP6SpyLogger implements MessageFormattingStrategy {@Overridepublic String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) {Map<String, Object> message = new LinkedHashMap<>(8);String newPrepared = prepared.replace("   ", "").replace("\n", " ");message.put("prepared", newPrepared);String newSql = sql.replace("   ", "").replace("\n", " ");message.put("sql", newSql);return JSONObject.toJSONString(message, true);}
}
 
在spy.properties中配置自定义日志格式

 logMessageFormat=com.github.lybgeek.p6spy.extentsion.CustomP6SpyLogger

5、自定义日志输出【可选】

package com.xxx.gpm.platform.config;public class CustomStdoutLogger extends com.p6spy.engine.spy.appender.StdoutLogger{@Overridepublic void logText(String text) {System.out.println("sql:" + text);}
}

在spy.properties中配置自定义日志输出

 appender=com.github.lybgeek.p6spy.extentsion.CustomStdoutLogger

6、测试观察控制台输出

代码语言:java

AI代码解释

 sql: 耗时:1 ms 2022-05-10 11:38:34执行 SQL:SELECT id,username,password,fullname,mobile,email FROM t_user

总结

p6spy可以根据sql的执行效率分析sql对sql进行优化,但因为p6spy会对性能有一定影响,因此不适合在正式环境上使用。此外关于p6spy更详细的配置可以查看如下链接

https://p6spy.readthedocs.io/en/latest/configandusage.html

demo链接

https://github.com/lyb-geek/springboot-learning/tree/master/springboot-p6spy

http://www.xdnf.cn/news/782317.html

相关文章:

  • 应用智能化转型—MCP原理分析
  • 6-2 MySQL 数据结构选择的合理性
  • MCP:让AI工具协作变得像聊天一样简单 [特殊字符]
  • 数据库密码加密
  • Go Modules 详解 -《Go语言实战指南》
  • Cursor快速梳理ipynb文件Prompt
  • 群晖 NAS 如何帮助培训学校解决文件管理难题
  • python计算股票年化收益率、波动率、夏普比率、VaR
  • Hadoop 3.x 伪分布式 8088端口无法访问问题处理
  • Playwright 多浏览器并行测试与数据隔离实战指南
  • 【云计算】基础篇,含云测试
  • 解决 idea提示`SQL dialect is not configured` 问题
  • redis数据过期策略
  • Jpom:Java开发者的一站式自动化运维平台详解
  • Matlab实现LSTM-SVM回归预测,作者:机器学习之心
  • 日语输入法怎么使用罗马字布局怎么安装日语输入法
  • Linux 环境下高效视频切帧的实用指南
  • 嵌入式开发学习日志(linux系统编程--系统编程之 进程间通信IPC)Day32
  • Python函数参数详解:从位置参数到灵活调用的艺术
  • 使用nginx配置反向代理,负载均衡
  • 文生图模型FP8、BF16和FP16区别
  • Selenium 中 JavaScript 点击的优势及使用场景
  • 配置cursor
  • 如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)
  • 针对Element 2.8.2 Escape 级联选择器的懒加载功能扩充
  • 【Qt开发】事件
  • 【软件工程】可行性研究
  • Java多线程编程详解
  • 40、响应处理-【源码分析】-基于请求参数的内容协商原理
  • 一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化