首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MyBatis 查詢返回 Null 排查:字符編碼不匹配導致

     編輯:Java 相關知識

現象

MyBatis 執行查詢,日誌顯示 SQL 與參數正確,Total: 0,但直接在數據庫執行同 SQL 有結果。

根因

數據庫連接 URL 缺少字符編碼參數,導致中文參數傳輸亂碼,WHERE 條件不匹配。

解決方案

在 JDBC URL 追加編碼參數:

jdbc:mysql://host:3306/db?autoReconnect=true&useUnicode=true&characterEncoding=utf8

原理

  • useUnicode=true:啟用 Unicode 支持。
  • characterEncoding=utf8:指定傳輸編碼為 UTF-8,確保中文參數正確編碼/解碼。

驗證步驟

  1. 開啟 MyBatis DEBUG 日誌,觀察 Parameters: 科技評論(String) 是否為亂碼。
  2. 修改連接池配置(Druid/HikariCP/MyBatis xml)中的 URL。
  3. 重啟應用,再次測試查詢。

其他常見導致 Null 的原因

原因排查方法
resultMap 列名與實體屬性不匹配檢查 <result property="" column=""/> 大小寫、別名
類型處理器轉換失敗自定義 TypeHandler 或啟用 mapUnderscoreToCamelCase
事務未提交/隔離級別檢查 @Transactional、數據庫隔離級別
緩存干擾關閉二級緩存或清空緩存測試

總結

中文參數查詢無結果優先檢查 連接 URL 編碼參數,是 MyBatis/MySQL 經典坑。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved