SpringBoot配置使Mybatis打印SQL執(zhí)行時的實(shí)際參數(shù)值操作
問題描述
在開發(fā)過程中,默認(rèn)配置下SpringBoot和Mybatis正常結(jié)合運(yùn)行,但在打印的日志中動態(tài)sql中的參數(shù)位置顯示的是?,當(dāng)sql執(zhí)行違背預(yù)期時不免是因?yàn)閭鞯組apper中sql參數(shù)值不正確所導(dǎo)致,這時候如果調(diào)試能查看sql執(zhí)行時占位符處的值,這無疑能讓問題展示得更加直觀,如何在SpringBoot、Mybatis的框架下使日志中打印出sql執(zhí)行時獲得的實(shí)際參數(shù)呢?
問題表現(xiàn)
解決辦法
在SpringBoot項(xiàng)目中的配置文件application.properties或者bootstrap.properties添加如下內(nèi)容
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
如果如果文件為yml的格式則在application.yml或者bootstrap.yml文件中添加如下內(nèi)容
mybatis:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
效果
配置后效果如下
補(bǔ)充知識:mybatis 顯示參數(shù)${} #{},${}適用場景 miniui sortField sortOrder
最近配合miniui 排序,發(fā)現(xiàn)用${} 可以直接使用 sortField、sortOrder 里面的值進(jìn)行排序,而用#{} 就不行了
查了下 這兩個區(qū)別:
1.#{} 傳參,sql語句解析會加上"",
例如
select * from report where orgname= #{orgname}, 結(jié)果會是 select * fromreport whereorgname= ‘花果山'
2.${} 傳參,mybatis不會修改或轉(zhuǎn)義字符串,
select * from report order by ${sortField}, 結(jié)果會是 select * fromreport order by orgname.
#{}傳參能防止sql注入,mybatis會創(chuàng)建preparedstatement 并以它為背景設(shè)置安全的值
使用${field}不應(yīng)該允許用戶輸入這些field,或者通常自行轉(zhuǎn)義并檢查。
以上這篇SpringBoot配置使Mybatis打印SQL執(zhí)行時的實(shí)際參數(shù)值操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot+WebSocket搭建簡單的多人聊天系統(tǒng)
WebSocket是一種在單個TCP連接上進(jìn)行全雙工通信的協(xié)議。這是一種比較官方的說法,簡單點(diǎn)來說就是,在一次TCP連接中,通信的雙方可以相互通信。這篇文章主要介紹了SpringBoot+WebSocket搭建簡單的多人聊天系統(tǒng),需要的朋友可以參考下2019-10-10Java Builder Pattern建造者模式詳解及實(shí)例
這篇文章主要介紹了Java Builder Pattern建造者模式詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01java編程創(chuàng)建型設(shè)計(jì)模式工廠方法模式示例詳解
這篇文章主要為大家介紹了java編程創(chuàng)建型設(shè)計(jì)模式之工廠方法模式的創(chuàng)建及案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02IDEA實(shí)現(xiàn)Maven項(xiàng)目創(chuàng)建并連接Tomcat方式
Maven是一款由Apache開發(fā)的項(xiàng)目管理工具,主要用于Java項(xiàng)目的構(gòu)建和依賴管理,它通過pom.xml文件自動管理項(xiàng)目依賴的jar包,簡化了項(xiàng)目構(gòu)建過程,Maven支持項(xiàng)目從編寫源代碼到編譯、測試、打包、部署的全過程管理,其依賴管理功能免去了手動添加jar包的麻煩2024-10-10