mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

 

关于这个问题,网上解答很嘈杂,不同的人遇到的实际问题也不尽相同。今天启动项目时报了这个错,查了很长时间,下面就这个问题列举了一些可能出错的地方。

逆向生成的时候,存在多个数据库,表名相同,这样Result Maps 重复了,在对应的xxxMapper.xml中,只需要逆向生成的时候,指定schema,作区分,就不会有重复的resultmap了。我的问题是运行时没有把之前已经生成的PetMapper.xml删除掉,再次生成代码时,又附加了上去!所以在运行代码生成之前,要把以前已经生成的xml文件清掉,以防出错。

解决:去mapper.xml文件中去查询有没有重复的id,如果发现直接删除。

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点的问题


--------------------- 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值