背景:
搭了一個demo項目啓動的時候Mybatis報錯
錯誤信息:
Caused by: java.lang.IllegalStateException: No typehandler found for property xxx
排查過程:
在網上找資料,基本上清一色說是列字段名和數據庫字段名沒對上,所以首先檢查下xml文件中的列名和數據庫表的字段名是不是一一對應得上。如果你的問題是這個原因的話,那可以不用往下看。
由於我的代碼是直接生成的,所以不存在粗心寫錯列名的情況,有的文件報錯,有的文件不報錯,反覆觀察出錯的文件,發現出錯的文件都有一個共同的特點:這個xxx變量的類型是Clob。錯誤信息也說到了類型處理的問題,所以懷疑是Clob這個特殊的數據類型導致的。
解決辦法:
把bean類中的clob變量的類型改爲String類型(不用擔心String不夠用,能存4個G),再啓動,沒有報錯,問題解決。
具體就是把java.lang.IllegalStateException: No typehandler found for property xxx 這句錯誤信息中的xxx變量的數據類型從Clob改爲String。
另外還有一種解決辦法是自己定義一個typeHandler,暫時沒時間研究,也提一下吧,有時間再補充。