Springboot JPA打印SQL語句及參數(shù)的實(shí)現(xiàn)
背景
最近調(diào)試項(xiàng)目時(shí)需要打印sql語句以及參數(shù),在網(wǎng)上搜了好久才找到一個(gè)最簡單的解決方案,分享給大家。
項(xiàng)目使用的是springboot jpa來做數(shù)據(jù)的持久化,springboot版本為3.2.1,默認(rèn)的hibernate版本是6.4.1.Final,由于版本太高,網(wǎng)上常見的配置都不起作用,話不多說,直接上解決方案
方法一
在application.properties文件中添加如下配置:
# 打印jpa的sql語句,注意這個(gè)配置會(huì)導(dǎo)致sql語句重復(fù)打印,如果開啟了下面的配置,這個(gè)配置可以注釋掉 spring.jpa.show-sql=true # 打印sql語句及參數(shù) logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
如果用的是jdbcTemplate,需要這么配置
logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE
方法一適用于低版本的hibernate
方法二
在application.properties文件中添加如下配置:
# 打印jpa的sql語句,注意這個(gè)配置會(huì)導(dǎo)致sql語句重復(fù)打印,如果開啟了下面的配置,這個(gè)配置可以注釋掉 spring.jpa.show-sql=true # hibernate基礎(chǔ)日志級(jí)別 logging.level.org.hibernate=INFO # 打印sql語句及參數(shù) logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.orm.jdbc.bind=TRACE
方法二適用于hibernate版本在6以上。
方法三
在搜索的過程中發(fā)現(xiàn)有很多種打印sql的方法,如果想要優(yōu)雅打印sql語句及參數(shù)需要自定義sql語句攔截器,這就不是一杯咖啡的時(shí)間可以搞定的了,有興趣的讀者可以自己探索下。
最終呈現(xiàn)的打印效果如下,雖然不太優(yōu)雅,但是已經(jīng)能否滿足調(diào)試需求:
DEBUG 45929 --- [nio-8080-exec-1] org.hibernate.SQL : insert into user (age,name) values (?,?)
Hibernate: insert into user (age,name) values (?,?)
TRACE 45929 --- [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (1:INTEGER) <- [null]
TRACE 45929 --- [nio-8080-exec-1] org.hibernate.orm.jdbc.bind : binding parameter (2:VARCHAR) <- [null]
后續(xù)有其他解決方案,會(huì)持續(xù)更新補(bǔ)充。更多相關(guān)Springboot JPA打印SQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java web開發(fā)中獲取tomcat上properties文件內(nèi)容的方法
java web開發(fā)中如何獲取tomcat上properties文件內(nèi)容的方法,方便文件存儲(chǔ)位置的修改,解耦和,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
解析ConcurrentHashMap: 預(yù)熱(內(nèi)部一些小方法分析)
ConcurrentHashMap是由Segment數(shù)組結(jié)構(gòu)和HashEntry數(shù)組結(jié)構(gòu)組成。Segment的結(jié)構(gòu)和HashMap類似,是一種數(shù)組和鏈表結(jié)構(gòu),今天給大家普及java面試常見問題---ConcurrentHashMap知識(shí),一起看看吧2021-06-06
Java設(shè)計(jì)模式中的七大原則詳細(xì)講解
本篇文章主要對(duì)Java中的設(shè)計(jì)模式如,創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式以及7大原則進(jìn)行了歸納整理,需要的朋友可以參考下,希望能給你帶來幫助2023-02-02
解決nacos報(bào)錯(cuò)java.lang.ClassNotFoundException: com.netflix.
這篇文章主要介紹了解決nacos報(bào)錯(cuò)java.lang.ClassNotFoundException: com.netflix.config.DynamicPropertyFactory的問題,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Mybatis查詢數(shù)據(jù)的項(xiàng)目實(shí)現(xiàn)
MyBatis通過XML配置文件或注解,把Java對(duì)象映射到對(duì)應(yīng)的數(shù)據(jù)庫表中,實(shí)現(xiàn)對(duì)象關(guān)系和數(shù)據(jù)關(guān)系的互相轉(zhuǎn)換,從而使得Java應(yīng)用程序能夠更簡單的操作和讀取數(shù)據(jù)庫,本文就詳細(xì)的介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下2023-09-09
MyBatis自定義resultMap三種映射關(guān)系示例詳解
這篇文章主要介紹了MyBatis自定義resultMap三種映射關(guān)系,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析
這篇文章主要介紹了Java for循環(huán)Map集合優(yōu)化實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01
java用split分割字符串的一個(gè)有趣現(xiàn)象
最近在項(xiàng)目中使用了java中的split分割字符串,發(fā)現(xiàn)了一個(gè)bug,充分了展示了自己對(duì)java底層的認(rèn)知有很多的不足和欠缺。下面將這次的經(jīng)過總結(jié)出來分享給大家,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12

