记录Mybatis报Mapped Statements collection already contains value for 的错误的原因
在一次提供升级包让同事升级后,启动服务时出现Mybatis报Mapped Statements collection already contains value for 的错误,导致无法启动。
1.首先查看了报错的xml文件,里面是否有重复的id,id没有重复的。
2.在网上查到,当parameterType和resultType参数错误或者为空时也会报相应的错误,因为那个报错的查询语句resultType是一个实体类,怀疑是该类没有升级,检查发现是有这个类的。
3.怀疑mybatis的配置文件里配置了两次这个mapper,查看发现并没有
4.最后才知道,原来升级人员在升级时,备份xml文件是复制了一份然后改了名字,例如本来是A.XML,备份时在当前目录下改成A_0702.XML这样,但是实际文件的namespace还是原来的名称,导致有两个对应的xml,所以才报出上面错误