Mybatis出现Mapped Statements collection already contains value for XXX 错误(解决办法)

Mybatis出现Mapped Statements collection already contains value for XXX 错误(解决办法)

1、Mapper中存在了重复的id(同一个Mapper.xml 文件中重复出现了两个id 为XXX的方法)
那么就需要好好检查程序报错的地方,调用对应的mapper文件里的方法id了,看看是否id命名一样

2、有可能是parameterType和resultType,参数类型错误
仔细检查方法中的parameterType和resultType,查看相应的参数类型是否有错,或者有空的忘记写了。

3、有可能你的sqlSessionFactory中配置了多个xml的地址。

这时就需要仔细查看你的配置文件,是否将xml地址配重复了,将多余的删除掉。

4、若你项目中使用了2个xml文件去对应了一个.java文件,引用了同一个方法,而方法id相同就可能会出 现,比如:userDao.xml,userExlDao.xml,有多个mapper.xml, 执行sql时是随机找了一个xml来绑定ResultMap,就可能会出现此问题,那么这个时候就需要指定xml文件的加载顺序了。

5、多数据源的情况下,同一mapper文件被扫描了多次,导致异常。

6、如果以上情况都排查过还无法解决,那么就需要手动更改id的命名了,保证同一命名空间下id唯一,在后台报错行查看是哪一个方法调用报错,更改id,这也是没办法的办法了。

7、还有一种情况,就是多线程并发访问时会出现此问题,几乎在同一秒内甚至同一毫秒内程序执行调用多次,扫描mapper文件调用方法时会出现,对此我也比较头大,因为对这个多线程访问不是很熟,虽然没有手动写多线程开启,但是Java程序默认就是多线程,所以会有并发访问。
解决方式:mybaits初始化时加上sqlSesssionTemplate.getConfiguration().buildAllStatement。让Mybatis初始化时就编译sql语句。

记录共勉…

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值