异常:java.lang.IllegalArgumentException

贴一个困扰了一下午的异常,异常信息如下:

 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\code\idea\test\ssmcrud\target\ssm-crud\WEB-INF\classes\mapper\EmployeeMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [D:\code\idea\test\ssmcrud\target\ssm-crud\WEB-INF\classes\mapper\EmployeeMapper.xml]'. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.mxthd.crud.dao.EmployeeMapper.BaseResultMap

该异常大概的展现方式如下:
java.lang.IllegalArgumentException: Result Maps collection already contains value for xxx.xxx.xxx.BaseResultMap

意思大概是已经存在这个结果集,花费了好多时间找这个问题的原因,最后用eclipse的全局搜索发现,确实在同一个mapper文件下存在重复的BaseResultMap。
这个问题的产生原因是:使用mybatis逆向工程多次生成mapper时,未将之前生成的mapper.xml删除,导致其在原有的xml里追加内容。最终导致BaseResultMap重复。
解决方法:删除已生成的mapper.xml,重新生成。

原文链接:,转发请注明来源!

发表评论