mybatis异常:Could not find result map java.util.Map 问题分析及解决

本文分析了MyBatis中因使用resultMap属性不当导致的Could not find result map 'java.util.Map'异常,并给出了正确的配置示例。指出应使用resultType而非resultMap来指定返回类型为Map。

mybatis异常:Could not find result map java.util.Map 问题分析及解决

 

错误写法
  <select id="queryXXXCount" resultMap="java.util.Map" >

mybatis报出的异常日志:
org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.util.Map
 at org.apache.ibatis.builder.MapperBuilderAssistant.setStatementResultMap(MapperBuilderAssistant.java:354) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:292) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:113) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:579) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:505) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:500) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.binding.MapperMethod.setupCommandType(MapperMethod.java:240) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:71) ~[mybatis-3.1.1.jar:3.1.1]
 at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:39) ~[mybatis-3.1.1.jar:3.1.1]
 。。。
 
 
正确写法:
  <select id="queryXXXCount" resultType="java.util.Map">
 
 
注意:
 mybatis报出的异常日志栈信息定位不是那么准(找错误发生的地方不能直接根据异常栈信息直接定位到问题方法)
 此次根据这次异常栈信息找到的就是正常的方法,但是触发了有问题的那个mybatis
 
 在问题调试、查找过程中:根据svn提交信息将新提交的代码进行核对、注释掉,并进行实际调试才能准确定位此类问题。

 

异常报告 消息 Request processing failed; nested exception is org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'cn.com.mapper.User1Mapper.userMap' referenced from 'cn.com.mapper.User1Mapper.listBooksByUserid' 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'cn.com.mapper.User1Mapper.userMap' referenced from 'cn.com.mapper.User1Mapper.listBooksByUserid' org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) javax.servlet.http.HttpServlet.service(HttpServlet.java:555) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) 根本原因。 org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'cn.com.mapper.User1Mapper.userMap' referenced from 'cn.com.mapper.User1Mapper.listBooksByUserid' org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:341) org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:285) org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:113) org.apache.ibatis.session.Configuration.lambda$buildAllStatements$2(Configuration.java:816) java.base/java.util.Collection.removeIf(Collection.java:576) org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:815) org.apache.ibatis.session.Configuration.hasStatement(Configurat
05-31
"C:\Program Files\Java\jdk-9.0.4\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\2025zjwdezuoye\IntelliJ IDEA 2020.1\lib\idea_rt.jar=64683:D:\2025zjwdezuoye\IntelliJ IDEA 2020.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\2025zjwdezuoye\IntelliJ IDEA 2020.1\lib\idea_rt.jar;D:\2025zjwdezuoye\IntelliJ IDEA 2020.1\plugins\junit\lib\junit5-rt.jar;D:\2025zjwdezuoye\IntelliJ IDEA 2020.1\plugins\junit\lib\junit-rt.jar;C:\Users\86177\mybatistest\target\test-classes;C:\Users\86177\mybatistest\target\classes;C:\Users\86177\.m2\repository\org\mybatis\mybatis\3.5.2\mybatis-3.5.2.jar;C:\Users\86177\.m2\repository\junit\junit\4.12\junit-4.12.jar;C:\Users\86177\.m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;C:\Users\86177\.m2\repository\mysql\mysql-connector-java\8.0.11\mysql-connector-java-8.0.11.jar;C:\Users\86177\.m2\repository\com\google\protobuf\protobuf-java\2.6.0\protobuf-java-2.6.0.jar;C:\Users\86177\.m2\repository\log4j\log4j\1.2.12\log4j-1.2.12.jar" com.intellij.rt.junit.JUnitStarter -ideVersion5 -junit4 Test.PersonTest,test1 org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'com.itheima.mapper.IdCardMapper.studentMap' referenced from 'com.itheima.mapper.IdCardMapper.findAllStudent' ### Cause: org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'com.itheima.mapper.IdCardMapper.studentMap' referenced from 'com.itheima.mapper.IdCardMapper.findAllStudent' at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:76) at Test.PersonTest.test1(PersonTest.java:16) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58) Caused by: org.apache.ibatis.builder.IncompleteElementException: Could not find result map 'com.itheima.mapper.IdCardMapper.studentMap' referenced from 'com.itheima.mapper.IdCardMapper.findAllStudent' at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:341) at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:285) at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:113) at org.apache.ibatis.session.Configuration.lambda$buildAllStatements$2(Configuration.java:816) at java.base/java.util.Collection.removeIf(Collection.java:414) at org.apache.ibatis.session.Configuration.buildAllStatements(Configuration.java:815) at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:753) at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:748) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:146) ... 25 more Caused by: java.lang.IllegalArgumentException: Result Maps collection does not contain value for com.itheima.mapper.IdCardMapper.studentMap at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:964) at org.apache.ibatis.session.Configuration.getResultMap(Configuration.java:674) at org.apache.ibatis.builder.MapperBuilderAssistant.getStatementResultMaps(MapperBuilderAssistant.java:339) ... 33 more 进程已结束,退出代码 -1
09-26
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值