1. 程式人生 > >Mybatis啟動報錯: No typehandler found for property xxxx 的另一種可能(由CLOB型別導致的問題)

Mybatis啟動報錯: No typehandler found for property xxxx 的另一種可能(由CLOB型別導致的問題)

背景:

搭了一個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,暫時沒時間研究,也提一下吧,有時間再補充。