在MyBatis中實(shí)現(xiàn)控制臺輸出SQL參數(shù)的具體方案
在 MyBatis 中實(shí)現(xiàn)控制臺輸出 SQL 參數(shù),可通過以下方案實(shí)現(xiàn):
一、使用 MyBatis-Plus 的 SqlLogInterceptor(推薦)
適用場景: 項(xiàng)目已集成 MyBatis-Plus(3.5.3+版本)
配置步驟:
1、添加攔截器:
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new SqlLogInterceptor());
return interceptor;
}
}
2、配置日志輸出(application.yml):
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
此方案可直接輸出完整 SQL(參數(shù)替換為真實(shí)值)。
二、通過 log4jdbc 工具輸出完整 SQL
適用場景: 需獨(dú)立查看帶參數(shù)的 SQL,不依賴 MyBatis-Plus
步驟:
1、添加依賴:
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
</dependency>
2、修改 JDBC 驅(qū)動配置:
# 原 JDBC URL 前追加 "jdbc:log4jdbc:"
spring:
datasource:
url: jdbc:log4jdbc:mysql://localhost:3306/dbname
driver-class-name: net.sf.log4jdbc.DriverSpy
3、配置日志級別(logback.xml):
<logger name="jdbc.sqlonly" level="DEBUG"/> <!-- 僅輸出 SQL --> <logger name="jdbc.sqltiming" level="INFO"/> <!-- 輸出 SQL 及執(zhí)行時間 -->
此工具支持參數(shù)替換及 SQL 格式化。
三、自定義攔截器輸出參數(shù)(原始 MyBatis)
適用場景: 需定制化輸出格式
實(shí)現(xiàn)步驟:
1、創(chuàng)建攔截器類:
@Intercepts({@Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),
@Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class})})
public class SqlParamInterceptor implements Interceptor {
@Override
public Object intercept(Invocation invocation) throws Throwable {
Object parameter = invocation.getArgs()[1];
// 解析參數(shù)并拼接 SQL
System.out.println("Params: " + parameter);
return invocation.proceed();
}
}
2、注冊攔截器(mybatis-config.xml):
<plugins>
<plugin interceptor="com.example.interceptor.SqlParamInterceptor"/>
</plugins>
此方式需自行解析參數(shù)綁定邏輯,靈活性高但實(shí)現(xiàn)復(fù)雜。
四、注意事項(xiàng)
1、性能影響
輸出完整 SQL 會增加日志量,生產(chǎn)環(huán)境建議關(guān)閉 DEBUG 級別日志。
2、參數(shù)敏感信息
若 SQL 含敏感參數(shù)(如密碼),需過濾或脫敏處理。
3、IDE 工具支持
IDEA 可通過安裝插件(如 MyBatis Log Plugin)直接查看參數(shù)替換后的 SQL。
到此這篇關(guān)于在MyBatis中實(shí)現(xiàn)控制臺輸出SQL參數(shù)的具體方案的文章就介紹到這了,更多相關(guān)MyBatis控制臺輸出SQL參數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring ApplicationContext上下文核心容器深入探究
ApplicationContext是Spring應(yīng)用程序中的中央接口,由于繼承了多個組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊監(jiān)聽事件,加載資源文件等2023-01-01
springboot之security?FilterSecurityInterceptor的使用要點(diǎn)記錄
這篇文章主要介紹了springboot之security?FilterSecurityInterceptor的使用要點(diǎn)記錄,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
SpringBoot-MyBatis-plus實(shí)體類中常用的注解用法
這篇文章主要介紹了SpringBoot-MyBatis-plus實(shí)體類中常用的注解用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
Spring Boot中使用Spring-data-jpa的配置方法詳解
今天小編就為大家分享一篇關(guān)于Spring Boot中使用Spring-data-jpa的配置方法詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Spring Boot示例分析講解自動化裝配機(jī)制核心注解
這篇文章主要分析了Spring Boot 自動化裝配機(jī)制核心注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-07-07
SpringBoot整合Flink CDC實(shí)現(xiàn)實(shí)時追蹤mysql數(shù)據(jù)變動
我們將整合Spring Boot和Apache Flink CDC(Change Data Capture)來實(shí)現(xiàn)實(shí)時數(shù)據(jù)追蹤,下面是一個基本的實(shí)踐流程代碼,包括搭建Spring Boot項(xiàng)目、整合Flink CDC以及實(shí)現(xiàn)數(shù)據(jù)變動的實(shí)時追蹤,需要的朋友可以參考下2024-07-07
Java項(xiàng)目中大批量數(shù)據(jù)查詢導(dǎo)致OOM的解決
本文主要介紹了Java項(xiàng)目中大批量數(shù)據(jù)查詢導(dǎo)致OOM的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06

