开发者社区> 问答> 正文

【Spring+mybatis】mapper中resultMap的问题?报错

这是我的Mapper.xml  名字叫做 account-mapper.xml


<?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">

<!-- namespace和定义的Mapper接口对应,并实现其中的方法 -->


<mapper namespace="com.webfrm.mapper.AccountMapper">



	<resultMap type="com.webfrm.entity.Account" id="accountResultMap">

		<id property="accountId" column="account_id" />

		<result property="username" column="username" />

		<result property="password" column="password" />

		<result property="status" column="status" />

	</resultMap>
	
	
	
	<!-- id和mapper接口中的方法名对应,resultType使用mybatis.xml中的别名 -->

	<select id="getAccount" resultType="account">

            select * from account limit 1


	</select>


......
......
.....


这是我的resultMapper.xml 名字叫做  account-resultmap.xml



<?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="accountMap">

    <resultMap type="com.webfrm.entity.Account" id="accountResultMap">

        <id property="accountId" column="account_id"/>

        <result property="username" column="username"/>

        <result property="password" column="password"/>

        <result property="status" column="status"/>

    </resultMap>

</mapper>


对比上面两个xml会发现,有重复的内容,如下!

<resultMap type="com.webfrm.entity.Account" id="accountResultMap">

        <id property="accountId" column="account_id"/>

        <result property="username" column="username"/>

        <result property="password" column="password"/>

        <result property="status" column="status"/>

    </resultMap>

然后奇葩的事情就是,删掉任何一方就会出错。

删掉第一个xml中的重复部分报错为

Exception: org.apache.ibatis.builder.IncompleteElementException: Could not find result map com.webfrm.mapper.AccountMapper.accountResultMap

直接删掉第二个xml,则报错为:

Exception: org.apache.ibatis.builder.IncompleteElementException: Could not find result map accountMap.accountResultMap


贴出我的其它配置

Mybatis.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

	<!-- 别名 -->

	<typeAliases>

		<typeAlias type="com.webfrm.entity.Account" alias="account" />

	</typeAliases>




</configuration>

Spring中配置的mapperLocation如下:

<property name="mapperLocations">

			<list>

				<!-- 表示在com.webfrm.resultmap包或以下所有目录中,以-resultmap.xml结尾所有文件 -->

				<value>classpath:com/webfrm/resultmap/**/*-resultmap.xml</value>

				<value>classpath:com/webfrm/entity/*-resultmap.xml</value>

				<value>classpath:com/webfrm/mapper/**/*-mapper.xml</value>
				
				<value>classpath:com/webfrm/entity/*-mapper.xml</value>

			</list>

		</property>


    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

        <property name="basePackage" value="com.webfrm.mapper" />

        <property name="markerInterface" value="com.webfrm.mapper.SqlMapper" />

    </bean> 

求高手指点!





展开
收起
爱吃鱼的程序员 2020-06-22 21:39:54 813 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你是不是有在这两个XML里面的其它地方使用了resultMap=“accountResultMap”,如果是,那这些报错信息不足为奇!这两个配置文件中namespace不一样啊.虽然看起来是重复的,但实际上是两个不同的东西啊.2个都没用,全部删除。
    <divclass="ref">

    引用来自“sxgkwei”的答案

    <divclass=ref_body>2个都没用,全部删除。
    <divclass="ref">

    引用来自“被风遗忘”的答案

    <divclass=ref_body><divclass="ref">

    引用来自“sxgkwei”的答案

    <divclass=ref_body>2个都没用,全部删除。
    <divclass="ref">

    引用来自“xmut”的答案

    <divclass=ref_body>你是不是有在这两个XML里面的 其它地方使用了resultMap=“accountResultMap”,如果是,那这些报错信息不足为奇! 不会冲突,除非你2个地方都调用了,才找不到。

    2020-06-22 21:40:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多