MyBatis之Result Maps collection already contains value异常

背景

在运行SpringBoot项目时,启动过程中出现异常,异常提示为:

1
Result Maps collection already contains value for...BaseResultMap

排查

从异常日志看出,问题出在Mapper.xml文件里面,提示有BaseResultMap这个结果集有多个。

那么到对应的mapper文件中确认一下,发现的确有重复定义,而且基本上整个文件都重复写了两遍。

原因

一般在开发过程中,先建立了数据库表之后,通过MyBatis Generator进行逆向自动生成mapper.xml, DO对象定义以及Dao文件。本次使用的是better-mybatis-generator这个插件。

但要注意的是,当你对某个表格重复生成了两次,那么生成的文件不会覆盖之前的文件,而是在之前的文件后面追加了一遍。

解决办法

可以通过删除重复部分解决。

但由于生成的文件内容比较长,我采取了整个删掉重新再次生成一遍的方式解决。