本文主要是介绍SpringBoot集成P6Spy的实现示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...
本节目标
- 实现MyBATis Plus + P6Spy 进行sqly语句输出
- 实现Mybatis Plus + P6Spy 进行sql执行耗时输出
P6Spy简介
p6spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。通常使用它来跟踪数据库操作,查看程序运行过程中执行的sql语句。简单来说,就是对 SQL 语句执行过程的监控。我们一般用来做两件事China编程情:
- 打印完整的sql语句
- sql语句的耗时
官网地址:p6spy.readthedocs.io/en/latest/
抛出问题
首先来看一下 Mybaties-plus 的默认输出:
==> Preparing: SELECT user_id,dept_id,user_name,nick_name,email,phonenumber,sex,avatar,password,status,del_flag,javascriptcreate_time,create_by,update_time,update_by FROM sys_user WHERE del_flag=0 AND (user_id = ? AND user_name LIKE ?) ==> Parameters: 4(Long), %马%(String)
我们期望的是打印出一条完整的 sql 语句,甚至还想要看到每条 sql 语句的总耗时。这个时候,p6spy 就发挥出它的作用了。
集成P6Spy
参照gitee.com/mayuanfei/S…下的springboot04项目创建springboot05项目。然后在其基础上进行修改。
1. SpringBoot三板斧之加入依赖
<dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version> </dependency>
2. 修改数据库链接配置
- 替换你的JDBC Driver为com.p6spy.engine.spy.P6SpyDriver;
- 修改JDBC Url为jdbc:p6spy:xxxx。
application-dev中的配置修改前:
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://101.43.67.114:3306/springboot-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai username: root password: 23456
修改后:
3. 添加配置文件 spy.properties
在resources目录下创建spy.properties属性文件,内容如下:
# P6Spy的配置 # 应用的拦截模块 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=com.mysql.cj.jdbc.Driver # 是否开启慢SQL记录 outagedetection=trphpue # 慢SQL记录标准 2 秒 outagedetectioninterval=2 # 是否过滤 Log filter=true # 过滤 Log 时所排除的 sql 关键字,以逗号分隔 exclude=select 1 from dual
4. 执行上节中的测试
@Test
public void testSelect() {
List<SysUser> users = new LambdaQueryCpythonhainWrapper<>(this.sysUserMapper)
.eq(SysUser::getUserId, 4L)
.like(SysUser::getUserName, "马")
.list();
Console.log("users -> {}", users);
}
这里能看到执行用时和具体的sql语句如下:
Consume Time:29 ms 2023-05-24 15:34:44 Execute SQL:SELECT user_id,dept_id,user_name,nick_name,email,phonenumber,sex,avatar,password,status,del_flag,create_time,create_by,update_time,update_by FROM sys_user WHERE del_flag=0 ANwww.chinasem.cnD (user_id = 4 AND user_name LIKE '%马%')
代码地址
https://gitee.com/mayuanfei/SpringBootDemo下的springboot05
记忆印记
- p6spy能打印出完成的sql
- p6spy能打印出sql运行的用时
到此这篇关于SpringBoot集成P6Spy的实现示例的文章就介绍到这了,更多相关SpringBoot集成P6Spy内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于SpringBoot集成P6Spy的实现示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!