mybatis报错解决办法 :Result Maps collection does not contain value for java.lang.String

错误
java.lang.IllegalArgumentException: Result Maps collection does not contain value for java.lang.String
at org.apache.ibatis.session.Configuration S t r i c t M a p . g e t ( C o n f i g u r a t i o n . j a v a : 888 ) a t o r g . a p a c h e . i b a t i s . s e s s i o n . C o n f i g u r a t i o n . g e t R e s u l t M a p ( C o n f i g u r a t i o n . j a v a : 640 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . M a p p e r B u i l d e r A s s i s t a n t . g e t S t a t e m e n t R e s u l t M a p s ( M a p p e r B u i l d e r A s s i s t a n t . j a v a : 344 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . M a p p e r B u i l d e r A s s i s t a n t . a d d M a p p e d S t a t e m e n t ( M a p p e r B u i l d e r A s s i s t a n t . j a v a : 290 ) a t o r g . a p a c h e . i b a t i s . b u i l d e r . x m l . X M L S t a t e m e n t B u i l d e r . p a r s e S t a t e m e n t N o d e ( X M L S t a t e m e n t B u i l d e r . j a v a : 109 ) a t o r g . a p a c h e . i b a t i s . s e s s i o n . C o n f i g u r a t i o n . b u i l d A l l S t a t e m e n t s ( C o n f i g u r a t i o n . j a v a : 788 ) a t o r g . a p a c h e . i b a t i s . s e s s i o n . C o n f i g u r a t i o n . h a s S t a t e m e n t ( C o n f i g u r a t i o n . j a v a : 758 ) a t o r g . a p a c h e . i b a t i s . s e s s i o n . C o n f i g u r a t i o n . h a s S t a t e m e n t ( C o n f i g u r a t i o n . j a v a : 753 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r M e t h o d StrictMap.get(Configuration.java:888) at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:640) at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:344) at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:290) at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:109) at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:788) at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:758) at org.apache.ibatis.session.Configuration.hasStatement(Configuration.java:753) at org.apache.ibatis.binding.MapperMethod StrictMap.get(Configuration.java:888)atorg.apache.ibatis.session.Configuration.getResultMap(Configuration.java:640)atorg.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:344)atorg.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:290)atorg.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:109)atorg.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:788)atorg.apache.ibatis.session.Configuration.hasStatement(Configuration.java:758)atorg.apache.ibatis.session.Configuration.hasStatement(Configuration.java:753)atorg.apache.ibatis.binding.MapperMethodSqlCommand.resolveMappedStatement(MapperMethod.java:249)
at org.apache.ibatis.binding.MapperMethod S q l C o m m a n d . < i n i t > ( M a p p e r M e t h o d . j a v a : 219 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r M e t h o d . < i n i t > ( M a p p e r M e t h o d . j a v a : 49 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r P r o x y . c a c h e d M a p p e r M e t h o d ( M a p p e r P r o x y . j a v a : 65 ) a t o r g . a p a c h e . i b a t i s . b i n d i n g . M a p p e r P r o x y . i n v o k e ( M a p p e r P r o x y . j a v a : 58 ) a t c o m . s u n . p r o x y . SqlCommand.<init>(MapperMethod.java:219) at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49) at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65) at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58) at com.sun.proxy. SqlCommand.<init>(MapperMethod.java:219)atorg.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49)atorg.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)atorg.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)atcom.sun.proxy.Proxy120.selectByPrimaryKey(Unknown Source)

问题分析
1,该问题一定是mybatis的xml配置中出错了。至于是哪里,嗯…,mybatis并不能精确定位。
2,我遇到的情况是“这个Mapper和那个Mapper”都有这个问题。
3,因 resultMap=“java.lang.String” 引起 Result Maps collection does not contain value for java.lang.String

解决办法
1,检查所有xml配置文件中的 "resultMap"是否配置正确。
2,较为快速的办法,检查近期xml配置文件的修改部分。(无法精确定位问题。不要以为某个Mapper调用出错,错误就在该Mapper的xml配置文件中。)
3,具体到本次问题:resultMap=“java.lang.String” 改为 resultType=“java.lang.String”

类似问题
1,Parameter Maps collection does not contain value for 。
检查所有xml配置文件中的 "parameterMap"是否配置正确。

参考
https://github.com/mybatis/mybatis-3/issues/684
https://blog.csdn.net/zengdeqing2012/article/details/50978682

你可能感兴趣的:(mybatis)