昨天3個小時,被這個問題搞得難受,最後解決了,分享一下。網絡上講的很片面,並不能真正解決我的問題。
1. 語句沒有問題,MYSQL控制檯可以查詢出來,Mybatis無法查詢。
一定要先檢查springboot啓動時的鏈接數據庫的URL,編碼方式設置正確。
如果是application.properties,配置如下
spring.datasource.druid.url=jdbc:mysql://localhost:3306/videodb?useUnicode=true&characterEncoding=utf-8。
如果mybatis是單獨的配置文件,需要使用useUnicode=true&characterEncoding=utf-8。
確認數據庫的編碼格式,show variables
like
'character_set_database'
;UTF8
2、啓動URL,數據庫編碼格式、SQL語句都沒有問題,仍然沒有查詢結果。-----我就是被這一條坑了。
查詢不到解決。
把裏面#{queryParam}更換成常量"劉",可以查詢出解決。因此懷疑是預編譯出的問題,所以把#更換爲$,解決問題。如下所示:
總結:當出現中文時,不要使用#預編譯,防注入自己寫代碼進行校驗。因爲預編譯中文時,可能會出現某些問題,我的就是這裏出的問題,但是在另一個微服務中,使用#號又沒有問題,偶現性,所以建議統一修改爲$。