这是我的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>
求高手指点!
你是不是有在这两个XML里面的其它地方使用了resultMap=“accountResultMap”,如果是,那这些报错信息不足为奇!这两个配置文件中namespace不一样啊.虽然看起来是重复的,但实际上是两个不同的东西啊.2个都没用,全部删除。
<divclass="ref">
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。