Spring Boot 查詢 SQL 為空,為何 IDEA 返回空結果,Navicat 卻能成功查詢?

Spring Boot 查詢 SQL 為空,為何 IDEA 返回空結果,Navicat 卻能成功查詢?

spring Boot 查詢 sql 為空,問題根源在哪里?

在使用 spring boot 查詢數據庫時,遇到了如下問題:使用 idea 執行查詢返回空結果,而使用 navicat 執行相同 SQL 語句卻能成功返回數據。排查問題原因如下:

#和$的區別

在 Spring Boot 中,使用 #{} 綁定參數,表示 動態參數,會自動進行 SQL 注入防御。而使用 $() 綁定參數,表示 靜態參數,不會進行 SQL 注入防御。

在本例中,使用 #{} 綁定空參數,導致 SQL 注入防御機制過濾了該參數,導致查詢條件無效,返回空結果。

mybatis log插件

使用 IDEA 開發時,可以安裝 mybatis log 插件。啟用該插件后,可以在 IDEA 控制臺查看 MyBatis 執行的 SQL 語句,從而方便排查問題。

排查步驟:

  1. 安裝 mybatis log 插件
  2. 設置 IDEA 日志級別為 DEBUG
  3. 重新運行查詢操作
  4. 查看控制臺打印的 SQL 語句,找出問題所在

通過以上排查步驟,可以快速定位問題原因,并解決查詢為空的問題。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享