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

使用mybatis时,自己或者同事踩到的坑给大家分享下,有其他问题分享的同学欢迎交流~

现象:编译未出现异常,调用相关服务时候,出现 Could not find result map Java.util.Map,不管调用mybatis update,delete,insert,get方法都是抛出类似的异常。

分析:在这个基础上,Mapper.xml文件一般都是增量,不断新增功能,如果原先是好的,你应该意识到自己后面新增的地方出问题啦~,那好,如何定位呢?

解决:对于初次出现问题的同学,你可以把新增的代码进行逐一注释运行(当然可以使用对半查找,但是如果出错的地方多的话,不建议),这种办法虽然笨,但是对于新手(对mybatis的源码了解不够的情况下)而言是一种比较实在的方法。碰多了老司机,基本上就知道怎么去查找这个问题。总结几种情况:

1、错误写法 <select id="getXXX" resultMap="java.util.Map" > 原本的意思是想返回一个map,个人不建议返回map,建议返回实体bean,resultMap对应的是Mapper.xml 文件的 <resultMap id="" /> 标签,对,没错,就是这个,另外如果想要返回map,应该使用resultType

正确写法: <select id="getXXX" resultType="java.util.Map" >

2、使用@注解和Mapper.xml一起使用的时候,为了便于扩展,鄙人使用了ExtMapper.xml来继承Mapper.xml实现的,这样有利于新增/删除字段的时候,不需要改动ExtMapper.xml。 实际项目中又想使用@update,@Select这种注解型实现,书写方便,但是,ExtMapper.xml又比较灵活组织数据,此时调用的时候@ResultMap(id=" BaseResultMap") 此时也会有异常 Could not find result map Java.util.Map,一般解决方案是id带上域名,如@ResultMap(id=" com.xxx.xxx.BaseResultMap")。当然,官方本身还是建议使用全XML形式,主要出现这个问题的原因可能是贪图注解型的简单书写。

欢迎交流指正~



猜你喜欢

转载自blog.csdn.net/win7system/article/details/79991927