Mybatis中的xml文件resultMap引用其他文件的resultMap
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis中的xml文件resultMap引用其他文件的resultMap相关的知识,希望对你有一定的参考价值。
参考技术A其中 和 resultMap id=“tobeRef”
在引用文件中我们需要指定被引用文件的namespace+resultMap
关键属性 resultMap=“com.demo.mymall.mbg.mapper.UmsRoleMapper.tobeRef”
即被引用文件的namespace+resultMap
而不是被引用文件的路径
同理,<select>, <sql>定义的标签都可以被引用
MyBatis中的resultType和resultMap
MyBatis的查询在进行映射的时候,返回值类型可以使用resultType同时也可以使用resultMap。前者表示直接的返回值类型,一般是domain名称,当然这里可以写domain的全部路径也可以简写这样就得在MyBatis的配置文件中扫描实体。而后者表示对外部的ResultMap的引用,两者不能同时存在。
MyBatis在进行查询映射时,其实是和jdbcTemplate中queryForList一样是将查询出来的每一个属性都放在一个对应的map里的,其中键是属性名,值是对应的值。
当我们提供的返回类型是resultType时,MyBatis会将map中的键值对取出赋给resultType所指定的对象对应的属性,所以其实MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型是resultType时,MyBatis会自动将对应的值赋给resultType所指定对象的属性。
当我们提供的返回类型是resultMap时,因为map不能很好的表示领域模型,就需要我们自己定义resultMap和领域模型的映射关系,来进一步将他转换为对应的对象。
<!-- Seckill queryById(long seckillId);-->
<select id="queryById" parameterType="long" resultType="Seckill">
select seckill_id,name,number,start_time,end_time,create_time
from seckill
where seckill_id = #{seckillId}
</select>
MyBatis会自动创建一个ResultMap对象,因为这里指定了resultType,所以会从ResultMap中取出与Seckill对象中对应的键值进行赋值。
后续介绍随后在写~工作了
以上是关于Mybatis中的xml文件resultMap引用其他文件的resultMap的主要内容,如果未能解决你的问题,请参考以下文章
help:mybatis中resultMap和resultType的区别是啥呀?
mybatis和Dao映射的配置文件xml,中什么时候需要用resultType .什么时候用resultMap,及resultType和resultMap的区别