加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ssm mapper.xml讲解

发布时间:2020-12-16 23:42:54 所属栏目:百科 来源:网络整理
导读:1.resultMap resultMap就是结果集映射的配置标签, 二、从SQL查询结果到领域模型实体 ? 在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程。 ? 1. 通过JDBC查询得到ResultSet对象 ? 2. 遍历ResultSet对象( 结果集(ResultSet)是

1.resultMap

resultMap就是结果集映射的配置标签,

二、从SQL查询结果到领域模型实体                  

? 在深入ResultMap标签前,我们需要了解从SQL查询结果集到JavaBean或POJO实体的过程。

? 1. 通过JDBC查询得到ResultSet对象

? 2. 遍历ResultSet对象(结果集(ResultSet)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等),并将每行数据暂存到HashMap(即下文的resultmap)实例中,以结果集的字段名或字段别名为键,以字段值为值

? 3. 根据ResultMap标签的type属性(返回值的全限定类名,或类型别名)通过反射实例化领域模型,(autoMapping属性,true为:自动映射功能就是自动查找与字段名小写同名的属性名,并调用setter方法)

? 4. 根据ResultMap标签的type属性和id(主键)、result(属性)等标签信息将HashMap中的键值对,填充到领域模型实例中并返回

举个例子:

1.示例1:通过setter构造领域模型

public class EStudent{
  private long id;
  private String name;
  private int age;
  // getter,setter方法

  /**
   * 必须提供一个无参数的构造函数
   */
  public EStudent(){}
}

?

 <!-- 属性id代表整个经过处理后的结果集resultMap的标识,type代表使用哪种类作为其映射的类,可以是别名或者全限定名-->
    <resultMap id="getStudentRM" type="EStudnet">
        子元素id代表resultMap的主键
        <id property="id" column="ID"/>
      <!--  property: 映射数据库列的字段的java pojo类的成员变量名
        (若映射失败,myatis会映射成搜索给定名称的字段)
        column:数据库的列名或者列标签别名
        result代表其属性。-->
        <result property="studentName" column="Name"/>
        <result property="studentAge" column="Age"/>
    </resultMap>

?示例2:通过构造函数构造领域模型

public class EStudent{
  private long id;
  private String name;
  private int age;
  // getter方法
  public EStudent(long id,String name,int age){
    this.id = id;
    this.name = name;
    this.age = age;
  }
}
<select id="getStudent" resultMap="getStudentRM">
  SELECT ID,Name,Age
    FROM TStudent
</select>
<resultMap id="getStudentRM" type="EStudnet">

<!-----
         constructor元素 ,指定使用指定参数列表的构造函数来实例化领域模型。注意:其子元素顺序必须与参数列表顺序对应

                                 idArg子元素 ,标记该入参为主键

                                 arg子元素 ,标记该入参为普通字段(主键使用该子元素设置也是可以的)
------->

  <constructor>
    <idArg column="ID" javaType="_long"/>
    <arg column="Name" javaType="String"/>
    <arg column="Age" javaType="_int"/>
  </constructor>
</resultMap>

转载。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读