Springboot JPA打印SQL語(yǔ)句及參數(shù)的實(shí)現(xiàn)
背景
最近調(diào)試項(xiàng)目時(shí)需要打印sql語(yǔ)句以及參數(shù),在網(wǎng)上搜了好久才找到一個(gè)最簡(jiǎn)單的解決方案,分享給大家。
項(xiàng)目使用的是springboot jpa來(lái)做數(shù)據(jù)的持久化,springboot版本為3.2.1,默認(rèn)的hibernate版本是6.4.1.Final,由于版本太高,網(wǎng)上常見(jiàn)的配置都不起作用,話不多說(shuō),直接上解決方案
方法一
在application.properties文件中添加如下配置:
# 打印jpa的sql語(yǔ)句,注意這個(gè)配置會(huì)導(dǎo)致sql語(yǔ)句重復(fù)打印,如果開(kāi)啟了下面的配置,這個(gè)配置可以注釋掉 spring.jpa.show-sql=true # 打印sql語(yǔ)句及參數(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語(yǔ)句,注意這個(gè)配置會(huì)導(dǎo)致sql語(yǔ)句重復(fù)打印,如果開(kāi)啟了下面的配置,這個(gè)配置可以注釋掉 spring.jpa.show-sql=true # hibernate基礎(chǔ)日志級(jí)別 logging.level.org.hibernate=INFO # 打印sql語(yǔ)句及參數(shù) logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.orm.jdbc.bind=TRACE
方法二適用于hibernate版本在6以上。
方法三
在搜索的過(guò)程中發(fā)現(xiàn)有很多種打印sql的方法,如果想要優(yōu)雅打印sql語(yǔ)句及參數(shù)需要自定義sql語(yǔ)句攔截器,這就不是一杯咖啡的時(shí)間可以搞定的了,有興趣的讀者可以自己探索下。
最終呈現(xiàn)的打印效果如下,雖然不太優(yōu)雅,但是已經(jīng)能否滿(mǎn)足調(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)文章希望大家以后多多支持腳本之家!
- SpringbootJPA分頁(yè) PageRequest過(guò)時(shí)的替代方法
- SpringBoot整合JPA詳細(xì)代碼實(shí)例
- springboot Jpa多數(shù)據(jù)源(不同庫(kù))配置過(guò)程
- SpringBoot中的JPA(Java?Persistence?API)詳解
- 使用SpringBoot和JPA實(shí)現(xiàn)批量處理新增、修改
- SpringBoot集成Jpa對(duì)數(shù)據(jù)進(jìn)行排序、分頁(yè)、條件查詢(xún)和過(guò)濾操作
- SpringBoot整合JPA方法及配置解析
- SpringBoot整合JPA 基礎(chǔ)使用示例教程
相關(guān)文章
Java Comparator.comparing比較導(dǎo)致空指針異常的解決
這篇文章主要介紹了Java Comparator.comparing比較導(dǎo)致空指針異常的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Maven中錯(cuò)誤使用parent.relativePath導(dǎo)致構(gòu)建失敗問(wèn)題
這篇文章主要介紹了Maven中錯(cuò)誤使用parent.relativePath導(dǎo)致構(gòu)建失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08RedisKey的失效監(jiān)聽(tīng)器KeyExpirationEventMessageListener問(wèn)題
這篇文章主要介紹了RedisKey的失效監(jiān)聽(tīng)器KeyExpirationEventMessageListener問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05Java SpringBoot集成ChatGPT實(shí)現(xiàn)AI聊天
ChatGPT已經(jīng)組件放開(kāi)了,現(xiàn)在都可以基于它寫(xiě)插件了,也許可以用它結(jié)合文字語(yǔ)音開(kāi)發(fā)一個(gè)老人小孩需要的智能的說(shuō)話陪伴啥的,這篇文章就介紹SpringBoot結(jié)合ChatGPT實(shí)現(xiàn)AI聊天感興趣的同學(xué)可以借鑒一下2023-04-04java之swing實(shí)現(xiàn)復(fù)選框的方法
這篇文章主要介紹了java之swing實(shí)現(xiàn)復(fù)選框的方法,實(shí)例分析了java基于圖形界面復(fù)選框的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09IDEA2022.1創(chuàng)建maven項(xiàng)目規(guī)避idea2022新建maven項(xiàng)目卡死無(wú)反應(yīng)問(wèn)題
這篇文章主要介紹了IDEA2022.1創(chuàng)建maven項(xiàng)目規(guī)避idea2022新建maven項(xiàng)目卡死無(wú)反應(yīng)問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08