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中的resultType和resultMap

mybatis和Dao映射的配置文件xml,中什么时候需要用resultType .什么时候用resultMap,及resultType和resultMap的区别

MyBatis XML配置

MyBatis注解开发的两种方法@Results和resultMap

MyBatis - 3.XML映射文件