使用 resultMap 实现高级结果集映射

resultMap 的基本配置项

  属性

    id 属性:resultMap 的唯一标识,此 id 值用于 select 元素 resultMap 属性的引用。
    type 属性:表示该 resultMap 的映射结果类型(通常是 Java 实体类)。

  子节点

    id 子节点:一般对应数据库中该行的主键 id,设置此项可以提升 MyBatis 性能。
    result 子节点:映射到 JavaBean 的某个 “简单类型” 属性,如基础数据类型、包装类等。

  子节点属性

    column 属性:表示从数据库中查询的字段名或别名。

    property 属性:表示查询出来的字段对应的值赋给实体对象的哪个属性。

  说明:子节点 id 和 result 均可实现最基本的结果集映射,将列映射到简单数据类型的属性。这两者唯一不同的是:在比较对象实例时 id 将作为结果集的标识属性。这有助于提高总体性能,特别是应用缓存和嵌套结果映射的时候。而若要实现高级结果映射,就需要学习下面两个配置项: association 和 collection。

ssociation

  association:映射到 JavaBean 的某个 “复杂类型” 属性,比如 JavaBean 类,即 JavaBean 内部嵌套一个复杂数据类型(JavaBean)属性,这种情况就属于复杂类型的关联。但是需要注意: association 仅处理一对一的关联关系

  ssociation 的属性

    javaType 属性:完整 Java 类名或者别名。若映射到一个 JavaBean,则 MyBatis 通常会自行检测到其类型;若映射到一个 HashMap ,则应该明确指定 javaType,来确保所需行为。

     property 属性:映射数据库列的实体对象的属性。

  ssociation 的子元素

    id 子元素:一般对应数据库中该行的主键 id,设置此项可以提升 MyBatis 性能。

    result 子元素
        ◆ property 属性:映射数据库列的实体对象的属性。此处为 Role 的属性。
        ◆ column 属性:数据库列名或别名。

  说明
     (1)在做结果映射的过程中,需要注意:要确保所有的列名都是唯一且无歧义的。
     (2)id 子元素在嵌套结果映射中扮演了非常重要的角色,应该指定一个或者多个属性来唯一标识这个结果集。实际上,即便没有指定 id, MyBatis 也会工作,但是会导致严重的性能开销,所以最好选择尽量少的属性来唯一标识结果,主键或者联合主键均可。

 案例:根据用户角色 id 获取该角色下的用户列表

  

猜你喜欢

转载自www.cnblogs.com/wxdestiny/p/9772412.html