关于mybatis启动报Result Maps collection already contains value for ...的问题总结

今天在用mybatis逆向工程生成代码后,启动项目测试时候出现了这个错误。关于这个错误的原因,各有不同。查了很长时间,下面就这个问题列举了一些可能出错的地方。

1、当同一个xml映射文件内存在两个相同的id(即两个sql语句的id相同)时会报此错

解决:查询sql语句的id值修改

2、在mybatis的配置文件mybatis.xml内使用了<mapper/>标签加载xxxMapper.xml的映射文件报错,因为如果xxxMapper.xml与namespace的接口在同一路径下,就不需要在mybaits.xml中再进行配置了。

解决:将mybatis文件中<mapper/>标签中的内容删除

3、parameterType中的问题。这里的类名如果找不到也会报这个错,比如你之前是将该类名写死在这里,之后由于重构将该类转移到其他包中,如果这里不修改也会报这个错

解决:检查。。

4、还是parameterType中的问题,这次是关于自定义类的,当你使用基本类型的时候,比如int、string等,千万不要写错,比如写成strnig,咋一看看不出来,结果该问题就很难找

解决:检查。。

5、resultType的值与resultMap的id值相同的话会报错,可能是冲突了

解决:修改resultMap的id属性,因为resultType的值即为bean类别名或者全路径名

6、这一点和上一点差不多,如果是自定义resultMap,如果返回类型写成resultType,也会报这个错(今天就载在这。)

解决:将返回类型改为resultMap,且不要出现第5点的问题

7. 配置的时候generatorConfig.xml(我的逆向工程配置文件名),里面的schema没有指定,如果没有指定的话,本地存在多个相同名字的表的话,逆向工程会自己去找名字叫t_user的这张表,也就可能导致生成了错误的bean。然后就会产生上面的问题。一定不要忘了指定。 我本地有三张叫t_user的表,忘了指定schema,就生成了错误的bean。

<table schema="ssmteam"  tableName="t_user"  domainObjectName="User"> </table>

 

猜你喜欢

转载自blog.csdn.net/qq_41378597/article/details/83900060