欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mybatis报错Mapped Statements collection already contains value

程序员文章站 2022-07-15 12:05:52
...

错误描述

最近部署ssm项目时出错,错误为
Mapped Statements collection already contains value for
xxx包.xxxmapper.xxx方法

部署项目时,第一次使用了maven+mybatis generator,由于第一次使用****,一次性生成了许多方法,添加方法时,忘记更改项目id

处理弯路

在spring中配置mybatis的mapperLocations属性时,配置了单条路径时,并没有出现这个错误。但配置两条路径时,就出错了。怀疑是路径配置引起的出错

最后发现并不是这个问题:但在这里附上配置多条路径的代码:

1、方法一:xml文件都放在mapper中,直接写上通配符

<bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean">
    	<property name="dataSource" ref="dataSource"></property>
    	<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    	<property name="typeAliasesPackage" value="pojo"></property>
    </bean>

2、使用数组:

<property name="mapperLocations">
	      <list>
	          <value>classpath:mapper/DeploymentMapper.xml</value>
	          <value>classpath:mapper/EmployeeMapper.xml</value>
	      </list>
</property>

用这个代码替换上面对应的位置

解决方法

1、将重名id修改,即可

从其他帖子收集的解决方法:

2.mapper中的parameterType或resultType为空。

3、忘了改namespace指向的类,所以两个mapper指向同一个mapper,所以报了这个错。

4、在使用@Select等注解的情况下,方法名即为mapper的id,重载的方法会报这个错。