Java EE轻量级框架应用实战:SSM框架(Spring MVC+Spring+MyBatis)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.1 关联映射

4.1.1 关联关系概述

在关系型数据库中,多表之间存在着3种常见的关联关系,分别为一对一、一对多和多对多,如图4.1所示。

img

图4.1 关系型数据库中多表之间的3种关联关系

这3种关联关系的具体说明如下。

(1)一对一:在任意一方引入对方主键作为外键。

(2)一对多:在“多”的一方,添加一方的主键作为外键。

(3)多对多:产生中间关系表,引入两张表的主键作为外键,两个主键成为联合主键或使用新的字段作为主键。

通过数据库中的表可以描述数据之间的关系,同样,在Java中通过对象也可以进行关系描述,如图4.2所示。

img

图4.2 Java对象描述数据表之间的关系

在图4.2中,3种关联关系的描述如下。

(1)一对一的关系:指在本类中定义对方类型的对象,如A类中定义B类类型的属性b,B类中定义A类类型的属性a。

(2)一对多的关系:指一个A类类型对应多个B类类型的情况,需要在A类中以集合的方式引入B类类型的对象,在B类中定义A类类型的属性a。

(3)多对多的关系:指在A类中定义B类类型的集合,在B类中定义A类类型的集合。

以上就是Java对象中,3种实体类之间的关联关系。那么如何使用MyBatis框架处理Java对象中的三种关联关系呢?在接下来的内容中,将对MyBatis框架的这几种关联关系的使用进行详细讲解。

4.1.2 resultMap元素的基本配置项

在讲解使用resultMap元素实现高级结果映射之前,先回顾学习过的resultMap元素的基本配置项。

1.属性

(1)id:resultMap元素的唯一标识。

(2)type:resultMap元素的映射结果类型(通常是Java实体类)。

2.子节点

(1)id:一般对应数据库中该行的主键id,设置此项可以提升MyBatis框架的性能。

(2)result:映射到JavaBean的某个“简单类型”属性,如基础数据类型、包装类等。

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