SpringBoot集成P6Spy的實現(xiàn)示例
本節(jié)目標(biāo)
- 實現(xiàn)Mybatis Plus + P6Spy 進(jìn)行sqly語句輸出
- 實現(xiàn)Mybatis Plus + P6Spy 進(jìn)行sql執(zhí)行耗時輸出
P6Spy簡介
p6spy 是一個可以用來在應(yīng)用程序中攔截和修改數(shù)據(jù)操作語句的開源框架。通常使用它來跟蹤數(shù)據(jù)庫操作,查看程序運(yùn)行過程中執(zhí)行的sql語句。簡單來說,就是對 SQL 語句執(zhí)行過程的監(jiān)控。我們一般用來做兩件事情:
- 打印完整的sql語句
- sql語句的耗時
官網(wǎng)地址:p6spy.readthedocs.io/en/latest/
拋出問題
首先來看一下 Mybaties-plus 的默認(rèn)輸出:
==> Preparing: 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 AND (user_id = ? AND user_name LIKE ?) ==> Parameters: 4(Long), %馬%(String)
我們期望的是打印出一條完整的 sql 語句,甚至還想要看到每條 sql 語句的總耗時。這個時候,p6spy 就發(fā)揮出它的作用了。
集成P6Spy
參照gitee.com/mayuanfei/S…下的springboot04項目創(chuàng)建springboot05項目。然后在其基礎(chǔ)上進(jìn)行修改。
1. SpringBoot三板斧之加入依賴
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
2. 修改數(shù)據(jù)庫鏈接配置
- 替換你的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目錄下創(chuàng)建spy.properties屬性文件,內(nèi)容如下:
# P6Spy的配置 # 應(yīng)用的攔截模塊 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 # 使用日志系統(tǒng)記錄 sql #appender=com.p6spy.engine.spy.appender.Slf4JLogger # 設(shè)置 p6spy driver 代理 deregisterdrivers=true # 取消JDBC URL前綴 useprefix=true # 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset. excludecategories=info,debug,result,commit,resultset # 日期格式 dateformat=yyyy-MM-dd HH:mm:ss # 實際驅(qū)動 可多個 driverlist=com.mysql.cj.jdbc.Driver # 是否開啟慢SQL記錄 outagedetection=true # 慢SQL記錄標(biāo)準(zhǔn) 2 秒 outagedetectioninterval=2 # 是否過濾 Log filter=true # 過濾 Log 時所排除的 sql 關(guān)鍵字,以逗號分隔 exclude=select 1 from dual
4. 執(zhí)行上節(jié)中的測試
@Test
public void testSelect() {
List<SysUser> users = new LambdaQueryChainWrapper<>(this.sysUserMapper)
.eq(SysUser::getUserId, 4L)
.like(SysUser::getUserName, "馬")
.list();
Console.log("users -> {}", users);
}
這里能看到執(zhí)行用時和具體的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 AND (user_id = 4 AND user_name LIKE '%馬%')
代碼地址
https://gitee.com/mayuanfei/SpringBootDemo下的springboot05
記憶印記
- p6spy能打印出完成的sql
- p6spy能打印出sql運(yùn)行的用時
到此這篇關(guān)于SpringBoot集成P6Spy的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot集成P6Spy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳細(xì)講解Java中==與equals的區(qū)別對比
這篇文章主要為大家詳細(xì)介紹了Java中==與equals的區(qū)別對比,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價值,感興趣的同學(xué)可以參考閱讀下2023-09-09
Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟
本文主要介紹了使用Jenkins一鍵打包部署SpringBoot應(yīng)用的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12
Java使用ArrayList實現(xiàn)撲克牌的示例代碼
學(xué)習(xí)了關(guān)于集合類的知識,我們可以做一個小項目來加深對集合類知識的學(xué)習(xí)!本文就來利用ArrayList實現(xiàn)撲克牌發(fā)牌洗牌效果,需要的可以參考一下2022-10-10
SpringBoot+Redis實現(xiàn)不重復(fù)消費(fèi)的隊列的示例代碼
本文主要介紹了SpringBoot+Redis實現(xiàn)不重復(fù)消費(fèi)的隊列的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(41)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
SpringMVC 響應(yīng)數(shù)據(jù)和結(jié)果視圖從環(huán)境搭建到實戰(zhàn)全解析
SpringMVC中,Controller方法的返回值決定了響應(yīng)方式,本文詳細(xì)講解了SpringMVC的開發(fā)環(huán)境搭建、Controller方法返回值分類、轉(zhuǎn)發(fā)與重定向機(jī)制,以及JSON異步交互的實現(xiàn),本文介紹SpringMVC 響應(yīng)數(shù)據(jù)和結(jié)果視圖從環(huán)境搭建到實戰(zhàn)全解析,感興趣的朋友跟隨小編一起看看吧2025-11-11

