【java.lang.IllegalArgumentException】Result Maps collection does not contain value for java.lang.Long
今天在项目里增加了一个新功能,心里美滋滋,结果一启动,残酷的现实给了我当头一棒。
我尼玛,怎么报错了!
它提示的这个SysConfigServiceImpl,我根本就没有碰过里面的代码。
心中一万头草泥马…
我抱着试试看的态度,问了问度娘,搜到了两个解决方案
1.有可能是mapper文件中中resultType误写成resultMap导致的
2.调用方法时报这个错误,不一定是与该方法相关的错误,如果其他mapper文件中配置错误,也会导致该错误。因为在调用方法时,会检测所有mapper中的返回值,这时候查看一下别的mapper中配置就好了。(坑了我好久)
于是,我就去找mapper文件,查看我添加的新代码,结果还真发现了一个。
<select id="selectDeptIdList" resultMap="java.lang.Long">
select u.dept_id from sys_dept u where u.del_flag = '0'
</select>
我当时惊了,我竟然真的把 resultType 写成了 resultMap
该方法返回的是 dept_id 的List集合,当然不能转化为 java.lang.Long
于是我把该方法,修改如下(把 resultMap改为 resultType)
<select id="selectDeptIdList" resultType="java.lang.Long">
select u.dept_id from sys_dept u where u.del_flag = '0'
</select>
这个报错就解决了。
但是我发现mybatis中的很多知识点我都忘记,看来有没有翻看笔记,好好查阅一番了
顺便把resultMap和resultType的区别,记录下来,方便以后查阅。
另外我还想感慨一句: 我好菜啊。