spring Boot 查詢 sql 為空,問題根源在哪里?
在使用 spring boot 查詢數據庫時,遇到了如下問題:使用 idea 執行查詢返回空結果,而使用 navicat 執行相同 SQL 語句卻能成功返回數據。排查問題原因如下:
#和$的區別
在 Spring Boot 中,使用 #{} 綁定參數,表示 動態參數,會自動進行 SQL 注入防御。而使用 $() 綁定參數,表示 靜態參數,不會進行 SQL 注入防御。
在本例中,使用 #{} 綁定空參數,導致 SQL 注入防御機制過濾了該參數,導致查詢條件無效,返回空結果。
mybatis log插件
使用 IDEA 開發時,可以安裝 mybatis log 插件。啟用該插件后,可以在 IDEA 控制臺查看 MyBatis 執行的 SQL 語句,從而方便排查問題。
排查步驟:
- 安裝 mybatis log 插件
- 設置 IDEA 日志級別為 DEBUG
- 重新運行查詢操作
- 查看控制臺打印的 SQL 語句,找出問題所在
通過以上排查步驟,可以快速定位問題原因,并解決查詢為空的問題。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END