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

手摸手5-springboot开启打印sql完整语句

目录

    • 手摸手5-springboot开启打印sql完整语句
      • 简介
    • p6spy简介
      • 引入依赖
      • 修改application-jdbc.yaml配置
      • 配置spy.properties文件配置项
      • 运行后效果

手摸手5-springboot开启打印sql完整语句

简介

MyBatis-Plus提供了SQL分析与打印的功能,通过集成p6spy组件,可以方便地输出SQL语句及其执行时长。本功能适用于MyBatis-Plus 3.1.0及以上版本。

p6spy简介

p6spy 是一个针对数据库访问进行拦截和记录的工具,它通过代理JDBC驱动程序来工作。这意味着你的应用程序可以像往常一样使用JDBC,而p6spy会在幕后记录所有的SQL语句及其执行时间。这对于开发和调试过程中的SQL优化非常有用。

p6spy不仅限于记录SQL日志,它还提供了一些高级功能,如:

  • 慢SQL检测:通过配置outagedetectionoutagedetectionintervalp6spy可以记录执行时间超过设定阈值的SQL语句。
  • 自定义日志格式:通过logMessageFormat,你可以自定义SQL日志的输出格式,包括时间戳、执行时间、SQL语句等。
  • 日志输出控制appender配置项允许你选择日志输出到控制台、文件或日志系统。

p6spy是一个强大的工具,它为MyBatis-Plus用户提供了便捷的SQL分析与打印功能。通过合理配置,你可以在开发和测试阶段有效地监控和优化SQL语句。然而,由于性能损耗,建议在生产环境中谨慎使用。

引入依赖

<!-- sql语句打印-->
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.9.1</version>
</dependency>

修改application-jdbc.yaml配置

driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://localhost:3306/ojmall?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai

新增驱动 driver-class-name: com.p6spy.engine.spy.P6SpyDriver 是p6spy的驱动
这里的jdbc:p6spy:mysqlp6spy的驱动,mysql是数据库类型。

image-20241112164209947

配置spy.properties文件配置项

#相关的包
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 日志格式
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.p6spy.engine.spy.appender.StdoutLogger
# 设置 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
# 开启慢sql
outagedetection=true
# 慢SQL记录标准(单位秒)
outagedetectioninterval=2

image-20241112165140717

运行后效果

这里能看到控制台输出了完整的sql语句

==>  Preparing: select * from user where login_name = ?
==> Parameters: admin(String)
 Consume Time:32 ms 2024-11-12 16:48:01
 Execute SQL:select * from user where login_name = 'admin'

image-20241112164832784


http://www.kler.cn/a/401716.html

相关文章:

  • 微众银行申请专利:不过分丢失泛用能力,提高语音大模型对困难样本学习效率
  • 杰发科技AC7801——ADC定时器触发的简单使用
  • 关于安卓模拟器或手机设置了BurpSuite代理和安装证书后仍然抓取不到APP数据包的解决办法
  • NIST 发布后量子密码学转型战略草案
  • Leetcode 3355 Zero Array Transformation
  • 区块链中的wasm合约是什么?
  • ARM 架构(Advanced RISC Machine)精简指令集计算机(Reduced Instruction Set Computer)
  • qt之QFTP对文件夹(含嵌套文件夹和文件)、文件删除下载功能
  • HTTP 响应头 Deprecation 字段在 API 版本迭代的应用
  • PHP 数组
  • Alpha 第 4 季:创作者聚焦—— The Intern @ The Hidden Walls
  • Zustand 让 React 状态变得太简单
  • 红外遥控报警器设计(模电课设)
  • 1 设计模式原则之开闭原则
  • 梧桐数据库深度解析并行查询优化技术
  • 国科大数据挖掘24秋期末考试试题回顾
  • 微服务瞎写
  • Spark 中 cache、persist 和 checkpoint 优化数据处理的三种重要机制介绍
  • 视频直播5G CPE解决方案:ZX7981PG/ZX7981PMWIFI6网络覆盖
  • Go 并发
  • windows已建立威胁IP排查
  • R语言基础入门详解
  • 【list的模拟实现】—— 我与C++的模拟实现(十四)
  • 经典的网络安全技术
  • 解决在使用JetBrains IDEs(如PyCharm或CLion)进行GitHub项目分享时,用户经常遇到“此站点的访问已被限制”的问题
  • 相机标定原理