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了

 

 

posted @ 2021-07-28 10:13  墙角里的蜘蛛  阅读(801)  评论(0编辑  收藏  举报