上一节我们知道了一对一关系使用association的标签做映射,那么一对多关系该如何处理呢?今天小博老师跟大家一起学习ResultMap中,处理一对多映射关系的标签collection(聚焦元素)。
聚集元素collection用来处理“一对多”关系。需要指定映射以下几个关键的属性:
javaType:Java实体类的属性(一般为ArrayList,可省略);
ofType:列表中对象的类型(Java实体类);
property:Java实体类中的属性名称。
比如用户User与爱好Hobby的一对多关系中,User类中有一个List包含该用户所有的爱好列表,User类的描述如下:
Hobby类的描述如下:
对应的ResultMap的文件描述:
这里省略了javaType,默认是ArrayList的集合类。
基于以上的ResultMap的定义,我们可以做如下select定义:
Collocation也可以是使用ResultMap属性定义映射关系。只需要把Hobby单独定义一个ResultMap,并把collection的ResultMap属性值指向新定义的结果集映射即可。
myBatis加载一个聚集还可以使用select方式,它会执行一个其它映射的SQL 语句返回一个Java实体类型。这种做法较灵活但会将执行多次嵌套的SQL语句。这里不再展开赘述。