Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already

Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contain BaseResultMap

先说出现的bug:如图:
Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already_第1张图片
作为一名开发者,一定要学会甄选出控制台打印的错误信息中哪一条是自己错误的根本所在!

上图打印的信息就是说我们的mapper xml文件中出错啦,然后我们去对应mapper文件看,在这里给个小建议(项目中的mapper文件,mybatis中标签稍有不慎,项目就会无法正常启动,所以写的时候一定要细心谨慎,)。

再往下看错误信息看到了这个:

Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already_第2张图片

一下子错误原因就很清楚了,就是自己的mapper文件中出现了相同的映射结果集,就是说在你的mapper.xml文件中出现了相同的命名id,mybatis映射文件的时候是根据namespace+id,所以一旦你的标签中出现了重复的id,程序区别不出哪一个才是你想要进行映射的,所以才会报出这句话:Result Maps collection already contain BaseResultMap。

解决方案:仔细查看自己的mapper,是否存在重复的id.

其他类似的mapper.xml 文件出现的问题大致列举一下吧:

一、mapper标签中resultMap和resultType 未使用正确, parameterType和parameterMap在不同的场景未选择正确的。

二、mapper标签中出现了标签不匹配,少写括号啊等,对于我们现在程序员来说粘贴复制在正常过了,但是在复制别人的mapper语句时,一定不要忘记把自己的参数和结果集改成自己所需要的。

三、在mapper.xml文件中书写完方法之后,没有在对应的dao接口中进行书写方法,或者方法名和xml文件中的id未保持一致。

总而言之,mybatis标签的书写一定要细心,我们平常写代码往往是容易忽略这些小细节,导致除了bug之后令自己很烦恼。

希望前车之鉴,后车能用得上,谢谢!

你可能感兴趣的:(Java开发,程序人生)