我是靠谱客的博主 甜美花卷,最近开发中收集的这篇文章主要介绍MyBatis学习-resultMap属性,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<resultMap>标签写在mapper.xml中,由程序员控制SQL查询结果与实体类的映射关系。

resultMap属性与resultType属性不同时使用

  • 使用resultType属性,mybatis默认使用Auto Mapping特性,数据表中的列名与实体类中的属性名要相同才能自动映射成功。
  • 使用<resultMap>标签时,实体类中的属性名与数据表中的列名可以不相同,<select>标签不写resultType属性,而是使用resultMap属性引用<resultMap>标签。
  • 使用resultMap实现单表映射关系
Student表
idname
1学生1
2学生2

           实体类:

public class Student{
    private int id1;
    private String name1;
}

                  mapper.xml代码

<resultMap type="" id="mymap">
    <!-- type对应返回类型,这里对应的是实体类,采用的是别名的方式 -->
    <!--主键使用id标签配置映射关系,column对应数据表中的列,property对应实体类中的属性-->
    <id column="id" property="id1"/>
    <!--其他列使用result标签配置映射关系-->
    <result column="name" property="name1"/>
</resultMap>
<select id="selAll" resultMap="mymap">
    <!--resultMap的值对应resultMap标签对应的id-->
    select * from student
</select>
  • 使用resultMap实现关联单个对象(N+1方式),也就是说表中有一个字段是另一个表的外键。

N+1查询方式:先查询出某个表的全部信息,根据这个表的信息查询另一个表的信息。

  • 与业务装配的区别

业务装配是在service里面写代码,而使用resultMap映射方法是由mybatis完成装配。

<!--如果关联一个对象在resultMap标签中使用association标签-->
<!--property中的teacher对应的是student实体中的一个属性Teacher类型-->
<association property="teacher" select="com.ccnu.mapper.TeacherMapper.selById" column="tid"></association>
<!--select中对应teachermapper.xml中一个查询方法的id-->
<!--column对应把哪列的值传递给查询方法作为参数-->

注意:column中对应的列名Mybatis在传递参数时,默认只会装配一次,所以就算该属性名与数据库中的列名是否一致,不能使用Auto Mapping方式,必须使用resultMap标签进行映射。

  • 使用resultMap查询关联集合对象(N+1)

在查询中出现一对多的情况,需要关联集合对象,使用<collection>标签,用法与上述<association>类似。

最后

以上就是甜美花卷为你收集整理的MyBatis学习-resultMap属性的全部内容,希望文章能够帮你解决MyBatis学习-resultMap属性所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部