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,確保中文參數正確編碼/解碼。Parameters: 科技評論(String) 是否為亂碼。| 原因 | 排查方法 |
|---|---|
| resultMap 列名與實體屬性不匹配 | 檢查 <result property="" column=""/> 大小寫、別名 |
| 類型處理器轉換失敗 | 自定義 TypeHandler 或啟用 mapUnderscoreToCamelCase |
| 事務未提交/隔離級別 | 檢查 @Transactional、數據庫隔離級別 |
| 緩存干擾 | 關閉二級緩存或清空緩存測試 |
中文參數查詢無結果優先檢查 連接 URL 編碼參數,是 MyBatis/MySQL 經典坑。