`

MyBatis:Parameter Maps collection does not contain value for 的问题解决

 
阅读更多

报错:

org.apache.ibatis.builder.xml.IncompleteStatementException: Could not find parameter map com.demo.sys.mapper.ModuleMapper.moduleMap
	at org.apache.ibatis.builder.MapperBuilderAssistant.setStatementParameterMap(MapperBuilderAssistant.java:256)
	at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:220)
	at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:66)
	at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:497)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:434)
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:428)
	at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:188)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:51)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
	at $Proxy7.query(Unknown Source)
	at com.demo.sys.service.impl.UserServiceImpl.query(UserServiceImpl.java:56)
	at com.demo.sys.service.impl.UserServiceImpl.login(UserServiceImpl.java:81)
	at com.demo.sys.action.UserAction.login(UserAction.java:56)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:452)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:291)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:176)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:133)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:207)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:270)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:190)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498)
	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: Parameter Maps collection does not contain value for com.demo.sys.mapper.ModuleMapper.moduleMap
	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:594)
	at org.apache.ibatis.session.Configuration.getParameterMap(Configuration.java:390)
	at org.apache.ibatis.builder.MapperBuilderAssistant.setStatementParameterMap(MapperBuilderAssistant.java:254)
	... 76 more

 

 

发现配置:

	<resultMap type="com.demo.sys.entity.Module" id="moduleMap">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="remark" column="remark" />
		<result property="createDate" column="createdate" />
		<result property="updateDate" column="updateDate" />
		<association property="parent" column="parent_id"
			resultMap="moduleMap" select="queryModule">
		</association>
		<collection property="childs" column="parent_id"
			javaType="ArrayList" ofType="com.demo.sys.entity.Module"
			select="queryChildList">
		</collection>
	</resultMap>
	<select id="queryList" parameterMap="moduleMap" resultMap="moduleMap">
		select * from sys_module where id =#{id}
	</select>

 

更改配置:

 

<resultMap type="com.demo.sys.entity.Module" id="moduleMap">
		<id property="id" column="id" />
		<result property="name" column="name" />
		<result property="remark" column="remark" />
		<result property="createDate" column="createdate" />
		<result property="updateDate" column="updateDate" />
		<association property="parent" column="parent_id"
			resultMap="moduleMap" select="queryModule">
		</association>
		<collection property="childs" column="parent_id"
			javaType="ArrayList" ofType="com.demo.sys.entity.Module"
			select="queryChildList">
		</collection>
	</resultMap>
	<select id="queryList"  parameterType="com.demo.sys.entity.Module" resultMap="moduleMap">
		select * from sys_module where id =#{id}
	</select>

 

 

parameterMap="moduleMap" -------》parameterType="com.demo.sys.entity.Module"

 

解决了Mybatis中Parameter Maps collection does not contain value for xxx 的问题了。

 

查看Mybatis官方资料:

SQL映射的XML文件:parameterMap 已经废弃了,现在使用parameterType来处理。

 

 

 

 

 

分享到:
评论
2 楼 liaody_meil 2013-11-11  
的发生地方实得分
1 楼 deyanglining 2012-05-22  
 

相关推荐

    mybatisMapped报错 Statements collection does not contain value for

    在使用MyBatis框架进行数据库操作时,可能会遇到“Mapped Statements collection does not contain value for”这样的错误提示。这通常意味着MyBatis无法找到与指定的ID相对应的映射语句。下面将详细解释这个问题的...

    MyBatis通用插件自动生成代码器

    MyBatis通用插件正是为了解决这一问题而生。 使用该插件时,首先需要配置插件的生成规则,如指定数据库连接信息、表名、实体类包路径、接口包路径等。配置完成后,运行生成命令,插件会自动根据数据库中的表信息...

    如何解决Mybatis--java.lang.IllegalArgumentException: Result Maps collection already contains value for X

    在整合Spring、Struts2和Mybatis的过程中,可能会遇到各种问题,其中之一就是`java.lang.IllegalArgumentException: Result Maps collection already contains value for X`。这个问题通常出现在Mybatis配置文件中,...

    手写mybatis框架源码由浅入深

    手写mybatis框架源码 不借助其他任何框架,从最底层开始着手,用最简单的代码,将mybatis的底层框架,手写出来,让你对mybatis有一个更加深刻和直观的理解 详见:...

    mybatis-3.4.5

    MyBatis 3.4.5 是一个流行的Java持久层框架,它简化了数据库操作,提供了灵活的SQL映射和对象关系映射(ORM)功能。这个版本是MyBatis系列的一个稳定版本,包含了对先前版本的改进和新特性。 在MyBatis 3.4.5中,...

    mybatis 3.2.6

    这个版本可能包含了对性能的优化,bug修复,以及对之前版本中反馈问题的解决。MyBatis的每个新版本都致力于提供更好的用户体验和更稳定的性能。 描述中的"mybatis-3.2.6(最新mybatis jar).zip"提示我们这是一个ZIP...

    mybatis-paginator-1.2.15-API文档-中文版.zip

    赠送jar包:mybatis-paginator-1.2.15.jar; 赠送原API文档:mybatis-paginator-1.2.15-javadoc.jar; 赠送源代码:mybatis-paginator-1.2.15-sources.jar; 赠送Maven依赖信息文件:mybatis-paginator-1.2.15.pom;...

    mybatis 多层级collection嵌套.docx

    在MyBatis中,处理多层级集合嵌套是常见的需求,特别是在映射复杂的数据结构时。这个场景通常出现在一个实体对象包含多个子对象,而这些子对象又可能有自己的子对象,形成一种树状或者网状的数据关系。在提供的文档...

    mybatis collection list string

    标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...

    掌握MyBatis:Java项目中的数据持久化解决方案.txt

    mybatis

    mybatis-3.5.9-API文档-中文版.zip

    Maven坐标:org.mybatis:mybatis:3.5.9; 标签:mybatis、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    mybatis版本:3.5.6(jdk1.8(含)及以上)、3.4.6(jdk1.8以下)

    - **社区支持**:较新版本通常有更活跃的社区支持,能够及时解决遇到的问题。 - **稳定性**:较旧版本可能经过了更多用户的测试,稳定性相对较好。 - **依赖库兼容性**:确保所选版本与项目中其他库的兼容性。 在...

    mybatis-3.5.3-API文档-中文版.zip

    Maven坐标:org.mybatis:mybatis:3.5.3; 标签:mybatis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    mybatis-3.5.7-API文档-中文版.zip

    Maven坐标:org.mybatis:mybatis:3.5.7; 标签:mybatis、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    mybatis-3.4.6-API文档-中文版.zip

    Maven坐标:org.mybatis:mybatis:3.4.6; 标签:mybatis、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...

    mybatis-3.4.5-API文档-中英对照版.zip

    Maven坐标:org.mybatis:mybatis:3.4.5; 标签:mybatis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    mybatis-3.5.7-API文档-中英对照版.zip

    Maven坐标:org.mybatis:mybatis:3.5.7; 标签:mybatis、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    mybatis-3.4.6-API文档-中英对照版.zip

    Maven坐标:org.mybatis:mybatis:3.4.6; 标签:mybatis、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和...

    mybatis-3.5.2-API文档-中英对照版.zip

    Maven坐标:org.mybatis:mybatis:3.5.2; 标签:mybatis、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

    mybatis-3.5.9-API文档-中英对照版.zip

    Maven坐标:org.mybatis:mybatis:3.5.9; 标签:mybatis、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持...

Global site tag (gtag.js) - Google Analytics