java.lang.IllegalStateException: No typehandler found for mapping XXX


      前言:今天遇到了這個問題,剛開始覺得很容易解決的,畢竟能定位到出問題的文件和對應的字段,根據以往的經驗也可以判斷出是字段映射類型不匹配的問題,后來找了半天還是沒找到問題的根源,從網上百度,也沒看到令人滿意的分析以及和我情況類似的描述。於是,下定決心,先深呼吸,然后冷靜下來好好玩一下。

      如下是我的分析過程,這里以提供分析的思路為主,希望以后在遇到類似的問題能一下子定位到,解決掉。

1:異常信息的一部分,如下所示,和以往一樣,先仔細瞧瞧,根據異常的提示基本能定位到問題出在那個文件,那個字段或者某個小氛圍,如下所示

Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\workspace\XXX\target\ape-web-0.0.1-SNAPSHOT\WEB-INF\classes\mappers\SortCenterRouteMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalStateException: No typehandler found for mapping movementName
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:466)
at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419)
... 80 more
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalStateException: No typehandler found for mapping movementName
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:117)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:89)
at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:464)
... 83 more
Caused by: java.lang.IllegalStateException: No typehandler found for mapping movementName
at org.apache.ibatis.mapping.ResultMapping$Builder.validate(ResultMapping.java:147)
at org.apache.ibatis.mapping.ResultMapping$Builder.build(ResultMapping.java:136)
at org.apache.ibatis.builder.MapperBuilderAssistant.assembleResultMapping(MapperBuilderAssistant.java:426)
at org.apache.ibatis.builder.MapperBuilderAssistant.buildResultMapping(MapperBuilderAssistant.java:222)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildResultMappingFromContext(XMLMapperBuilder.java:371)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:276)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:248)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:240)
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:113)
... 85 more

2:下面是我的分析過程

2-1:定位到出問題的文件,字段,然后對照,映射的情況,映射對象的情況,數據庫表字段的情況,如下所示:

2-2:原本以為經過上面的分析一定能定位到問題的,結果讓我大惑不解,沒問題呀!仔仔細細看了幾遍沒發現有問題

2-3:后來就按照我原來分析問題的思路,再重新分析一遍(有時候我們認為不可能出現問題的地方,可能是,一旦出現問題就容易令我們崩潰的地方),下面是我重新分析的思路,根據報錯的提示信息——“No typehandler found for mapping”以及異常發生的嵌套位置,試着去定位到對應的源碼,然后通過調試模式看看到底是什么引起了程序拋錯,比較幸運,我一下子就定位到了的可能出現問題的源碼之處了,如下所示:

 2-4:啟動服務器,進入調試模式,跟蹤源碼報錯的部分,分析當時的運行情況,我們看到了程序為什么拋出異常,以及可能存在問題的地方,到這里基本就定位到問題的根源了,放慢速度,讓靈魂跟上腳步。讓我奇怪的是我的字段明明是String類型的為什么和自己認為不一樣哪?再回頭看看那個String類型的真面目吧!

 2-5:我去,還真不是自己認為的java.lang.String類型的?問題是定位到了,怎么解決就不說了!但是為什么是這個類型呢?是誰修改的?還是自己一不小心導致的?編程是個細致的活,所以還是要膽大心細一些吧!

3:參考

http://stackoverflow.com/questions/19273783/no-typehandler-exception-in-mybatis


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM