在 MyBatis 中實現控制臺輸出 SQL 參數

在 MyBatis 中實現控制臺輸出 SQL 參數,可通過以下方案實現:

# 一、使用 MyBatis-Plus 的 SqlLogInterceptor(推薦)

?適用場景?:項目已集成 MyBatis-Plus(3.5.3+版本)
?配置步驟?:

?1、添加攔截器?:

@Configuration
public class MyBatisPlusConfig {@Beanpublic 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(參數替換為真實值)。

二、通過 log4jdbc 工具輸出完整 SQL

?適用場景?:需獨立查看帶參數的 SQL,不依賴 MyBatis-Plus
?步驟?:

1?、添加依賴?:

<dependency><groupId>org.bgee.log4jdbc-log4j2</groupId><artifactId>log4jdbc-log4j2-jdbc4.1</artifactId><version>1.16</version>
</dependency>

?2、修改 JDBC 驅動配置?:

# 原 JDBC URL 前追加 "jdbc:log4jdbc:"
spring:datasource:url: jdbc:log4jdbc:mysql://localhost:3306/dbnamedriver-class-name: net.sf.log4jdbc.DriverSpy

?3、配置日志級別?(logback.xml):

<logger name="jdbc.sqlonly" level="DEBUG"/>  <!-- 僅輸出 SQL -->
<logger name="jdbc.sqltiming" level="INFO"/> <!-- 輸出 SQL 及執行時間 -->

此工具支持參數替換及 SQL 格式化。

三、自定義攔截器輸出參數(原始 MyBatis)

?適用場景?:需定制化輸出格式
?實現步驟?:

?1、創建攔截器類?:

@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 {@Overridepublic Object intercept(Invocation invocation) throws Throwable {Object parameter = invocation.getArgs()[1];// 解析參數并拼接 SQLSystem.out.println("Params: " + parameter);return invocation.proceed();}
}

2?、注冊攔截器?(mybatis-config.xml):

<plugins><plugin interceptor="com.example.interceptor.SqlParamInterceptor"/>
</plugins>

此方式需自行解析參數綁定邏輯,靈活性高但實現復雜。

四、注意事項

1?、性能影響?

輸出完整 SQL 會增加日志量,生產環境建議關閉 DEBUG 級別日志。

2、參數敏感信息?

若 SQL 含敏感參數(如密碼),需過濾或脫敏處理。

3?、IDE 工具支持?

IDEA 可通過安裝插件(如 MyBatis Log Plugin)直接查看參數替換后的 SQL。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/79134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79134.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79134.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

黃金、碳排放期貨市場API接口文檔

StockTV 提供了多種期貨市場的數據接口&#xff0c;包括獲取K線圖表數據、查詢特定期貨的實時行情等。以下為對接期貨市場的詳細接口說明。 一、獲取K線圖表數據 通過調用/futures/kline接口&#xff0c;您可以獲取指定期貨合約的歷史K線數據&#xff08;例如開盤價、最高價、…

“ES7+ React/Redux/React-Native snippets“常用快捷前綴

請注意&#xff0c;這是一個常用的列表&#xff0c;不是擴展提供的所有前綴。最完整和最新的列表請參考擴展的官方文檔或在 VS Code 中查看擴展的詳情頁面。 React (通常用于 .js, .jsx, .ts, .tsx): rfce: React Functional Component with Export Defaultrafce: React Arro…

[Windows] 能同時打開多個圖片的圖像游覽器JWSEE v2.0

[Windows] 能同時打開多個圖片的圖像游覽器JWSEE 鏈接&#xff1a;https://pan.xunlei.com/s/VOPpO86Hu3dalYLaZ1ivcTGIA1?pwdhckf# 十多年前收藏的能同時打開多個圖片的圖像游覽器JWSEE v2.0&#xff0c;官網已沒有下載資源。 JWSEE v2.0是烏魯木齊金維圖文信息科技有限公司…

[AI Tools] Dify 工具插件上傳指南:如何將插件發布到官方市場

Dify 作為開源的 LLM 應用開發平臺,不僅支持本地化插件開發,也提供了插件市場機制,讓開發者能夠將自己構建的插件發布并供他人使用。本文將詳細介紹如何將你開發的 Dify Tools 插件上傳至官方插件市場,包括 README 編寫、插件打包、倉庫 PR 等核心步驟。 一、準備 README 文…

gradle3.5的安裝以及配置環境變量

下載資源 Gradle |釋放 往下滑找到3.5版本&#xff0c;有條件的翻譯一下 這是原文點擊下載后解壓 隨后配置環境變量 變量名 GRADLE_HOME 變量值為bin路徑 配置path環境 win11直接添加%GRADLE_HOME%\bin 隨后進入命令提示符 輸入gradle -v 能看到版本號即為成功

單片機開發基礎與高效流程

單片機開發涉及硬件與軟件的緊密協作&#xff0c;是嵌入式系統的核心技術之一。以下從開發流程、調試技巧、代碼優化等方面詳細闡述高效開發方法。 一、開發環境搭建與配置 選擇合適的開發工具鏈是高效開發的基礎。以 STM32 為例&#xff0c;常用工具包括&#xff1a; IDE 選…

大模型系列(四)--- GPT2: Language Models are Unsupervised Multitask Learners?

論文鏈接&#xff1a; Language Models are Unsupervised Multitask Learners 點評&#xff1a; GPT-2采用了與GPT-1類似的架構&#xff0c;將參數規模增加到了15億&#xff0c;并使用大規模的網頁數據集WebText 進行訓練。正如GPT-2 的論文所述&#xff0c;它旨在通過無監督語…

數字孿生[IOC]常用10個技術棧(總括)

1. 什么是數字孿生&#xff1f; 數字孿生&#xff08;Digital Twin&#xff09; 是通過數字化技術對物理實體&#xff08;如設備、系統或環境&#xff09;進行高精度建模和實時映射的虛擬副本。其核心是通過 數據驅動 實現物理世界與虛擬世界的雙向交互&#xff0c;支持實時監控…

cnas軟件檢測實驗室質量管理體系文件思維導圖,快速理清全部文件

軟件檢測實驗室在申請CNAS資質時&#xff0c;需要根據認可文件的要求&#xff0c;建立實驗室質量管理體系&#xff0c;明晰地展示組織架構、合理地安排人員崗位職責和能力要求、全面地覆蓋認可文件要求的質量要素。這是一項非常龐大的工作&#xff0c;涉及到的文件類型非常多&a…

[Windows] 東芝存儲診斷工具1.30.8920(20170601)

[Windows] 東芝存儲診斷工具 鏈接&#xff1a;https://pan.xunlei.com/s/VOPpMjGdWZOLceIjxLNiIsIEA1?pwduute# 適用型號 東芝消費類存儲產品&#xff1a; 外置硬盤&#xff1a;Canvio 系列 內置硬盤&#xff1a;HDW****&#xff08;E300 / N300 / P300 / S300 / V300 / X30…

C++ learning day 01

目錄 1. iostream : 2.第一個C++程序 3. 執行過程以及以上例子詳解(以上例子為參考) 1. iostream : 全稱: input/output stream library 作用: 用于處理輸入輸出操作 2.第一個C++程序 #include <iostream>int main() {std::cout << "Hello World! &qu…

單位代碼簽名證書是什么?如何申請?

軟件安全已成為企業不可忽視的核心話題&#xff0c;當用戶下載企業級軟件時&#xff0c;若遇到“未知發布者”的警告彈窗&#xff0c;很可能是由于軟件未進行數字簽名所致。這種看似簡單的提示背后&#xff0c;隱藏著巨大的安全隱患與信任危機。而單位代碼簽名證書&#xff0c;…

《Zabbix Proxy分布式監控實戰:從安裝到配置全解析》

注意&#xff1a;實驗所需的zabbix服務器的搭建可參考博客 zabbix 的docker安裝_docker安裝zabbix-CSDN博客 1.1 實驗介紹 1.1.1 實驗目的 本實驗旨在搭建一個基于Zabbix的監控系統&#xff0c;通過安裝和配置Zabbix Proxy、MySQL數據庫以及Zabbix Agent&#xff0c;實現分…

泛型設計模式實踐

學海無涯&#xff0c;志當存遠。燃心礪志&#xff0c;奮進不輟。 愿諸君得此雞湯&#xff0c;如沐春風&#xff0c;事業有成。 若覺此言甚善&#xff0c;煩請賜贊一枚&#xff0c;共勵學途&#xff0c;同鑄輝煌&#xff01; 為解決在設計框架或庫時遇到的類型安全問題&#xff…

【kafla掃盲】FROM GPT

Kafka 掃盲指南&#xff1a;分布式流處理利器 Apache Kafka 是一個分布式流處理平臺&#xff0c;最早由 LinkedIn 開發&#xff0c;后來開源并捐贈給 Apache 基金會。Kafka 專為高吞吐量、低延遲的實時數據流處理而設計&#xff0c;廣泛用于日志收集、實時分析、消息隊列、流處…

每天五分鐘深度學習框架pytorch:視覺工具包torchvison

本文重點 在pytorch深度學習框架中,torchvision是一個非常優秀的視覺工具包,我們可以使用它加載一些著名的數據集,然后我們可以使用它來加載網絡模型,比如vgg,resnet等等,還可以使用它來預處理一些圖片數據,本節課程我們將學習一下它的使用方式。 torchvision的四部分…

操作系統 第2章節 進程,線程和作業

一:多道程序設計 1-多道程設計的目的 for:提高吞吐量(作業道數/處理時間),我們可以從提高資源的利用率出發 2-單道程序設計缺點: 設備的利用率低,內存的利用率低,處理機的利用率低 比如CPU去訪問內存,CPU空轉.內存等待CPU訪問也是沒有任何操作的.要是有多個東西要去訪問不沖…

位移監測儀,精準測量,專業守護

地質災害如滑坡、泥石流、地面沉降等具有突發性強、破壞性大的特點&#xff0c;傳統人工巡查方式存在效率低、時效性差等缺陷。對人類生命財產構成嚴重威脅&#xff0c;因此需要實時、精準的位移監測手段。地質災害監測預警系統集成了多種傳感器&#xff0c;對地表及地下形變進…

dropout層

從你提供的圖片來看&#xff0c;里面討論了 Dropout 層&#xff0c;讓我為你解釋一下它的工作原理和作用。 Dropout 層是什么&#xff1f; Dropout 是一種常用的正則化技術&#xff0c;用于避免神經網絡的 過擬合&#xff08;overfitting&#xff09;。過擬合是指模型在訓練數…

C++八股 —— vector底層

vector底層為動態數組 類構成 class vector : protected _Vector_base_Vector_base: _M_start&#xff1a;容器元素開始的位置_M_finish&#xff1a;容器元素結束的位置_M_end_of_storage&#xff1a;動態內存最后一個元素的下一個位置 構造函數 無參構造 根據性能優先規則&a…