Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.eport.market.dao.RaSysHBMapper"> <resultMap id="BaseResultMap" type="com.eport.market.dao.RaSysHB"> <id column="ID" jdbcType="VARCHAR" property="id" /> <result column="SYS" jdbcType="VARCHAR" property="sys" /> <result column="RA" jdbcType="VARCHAR" property="ra" /> <result column="OFF" jdbcType="VARCHAR" property="off" /> <result column="HRA" jdbcType="VARCHAR" property="hra" /> <result column="NAME" jdbcType="VARCHAR" property="name" /> <result column="REMARK1" jdbcType="VARCHAR" property="remark1" /> <result column="REMARK2" jdbcType="VARCHAR" property="remark2" /> </resultMap> <select id="getAll" resultMap="BaseResultMap" > select * from RA_SYS_H_B </select> <insert id="insertB" parameterType="com.eport.market.dao.RaSysHB" > insert into RA_SYS_H_B(ID , SYS , RA , OFF , HRA , NAME, REMARK1,REMARK2) values( #{id,jdbcType=VARCHAR} , #{sys,jdbcType=VARCHAR} , #{ra,jdbcType=VARCHAR} , #{off,jdbcType=VARCHAR} , #{hra,jdbcType=VARCHAR} , #{name,jdbcType=VARCHAR}, #{remark1,jdbcType=VARCHAR}, #{remark2,jdbcType=VARCHAR} ) </insert> <update id="updateByRa" parameterType="com.eport.market.dao.RaSysHB" > update RA_SYS_H_B <set> <if test="sys != null"> SYS = #{sys,jdbcType=VARCHAR}, </if> <if test="off != null"> OFF = #{off,jdbcType=VARCHAR}, </if> <if test="hra != null"> HRA = #{hra,jdbcType=VARCHAR}, </if> <if test="name != null"> NAME = #{hra,jdbcType=VARCHAR}, </if> <if test="ra != null"> RA = #{hra,jdbcType=VARCHAR}, </if> <if test="remark1 != null"> REMARK1 = #{remark1,jdbcType=VARCHAR}, </if> <if test="remark2 != null"> REMARK2 = #{remark2,jdbcType=VARCHAR}, </if> </set> <where> <if test="listRa != null"> RA IN <foreach collection="listRa" item="item" index="index" open="(" close=")" separator=","> <if test="(index % 999) == 998"> NULL ) OR RA IN (</if> #{item} </foreach> </if> <if test="listSys != null"> SYS IN <foreach collection="listSys" item="item" index="index" open="(" close=")" separator=","> <if test="(index % 999) == 998"> NULL ) OR SYS IN (</if> #{item} </foreach> </if> </where> </update> <delete id="deleteByRa" parameterType="com.eport.market.dao.RaSysHB" > delete RA_SYS_H_B where RA IN <foreach collection="listRa" item="item" index="index" open="(" close=")" separator=","> <if test="(index % 999) == 998"> NULL ) OR RA IN (</if> #{item} </foreach> </delete> </mapper>
Caused by: org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [mybatis-config.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.eport.market.dao.RaSysHBMapper.BaseResultMap at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:434) at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1573) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1511) ... 74 more Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.eport.market.dao.RaSysHBMapper.BaseResultMap at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:109) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:92) at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:428) ... 77 more Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.eport.market.dao.RaSysHBMapper.BaseResultMap at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120) at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92) at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:322) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:107) ... 79 more Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for com.eport.market.dao.RaSysHBMapper.BaseResultMap at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:782) at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:754) at org.apache.ibatis.session.Configuration.addResultMap(Configuration.java:536) at org.apache.ibatis.builder.MapperBuilderAssistant.addResultMap(MapperBuilderAssistant.java:207) at org.apache.ibatis.builder.ResultMapResolver.resolve(ResultMapResolver.java:47) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:284) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElement(XMLMapperBuilder.java:251) at org.apache.ibatis.builder.xml.XMLMapperBuilder.resultMapElements(XMLMapperBuilder.java:243) at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:116) ... 82 more
上面报错的意思是:mybatis的xml中类映射报错重名,是说在你的mapper.xml文件中出现了相同的命名id,mybatis映射文件的时候是根据namespace+id。。。。
解决办法 :
如果对应的javabean类参数和BaseResultMap中一致的话并且xml中没有任何错误语法或多写了几个符号,直接改一下映射类的名称即可
上面不能真正解决,最终查到是因为xml引用的映射java接口, 在别的xml被引用。换个java映射接口,ok了