博为峰JavaEE技术文章 ——MyBatis Mapper ResultMap(4)

上一节我们知道了一对一关系使用association的标签做映射,那么一对多关系该如何处理呢?今天小博老师跟大家一起学习ResultMap中,处理一对多映射关系的标签collection(聚焦元素)。

聚集元素collection用来处理“一对多”关系。需要指定映射以下几个关键的属性:

javaType:Java实体类的属性(一般为ArrayList,可省略);

ofType:列表中对象的类型(Java实体类);

property:Java实体类中的属性名称。

比如用户User与爱好Hobby的一对多关系中,User类中有一个List包含该用户所有的爱好列表,User类的描述如下:

博为峰JavaEE技术文章 ——MyBatis Mapper ResultMap(4)_第1张图片

Hobby类的描述如下:

对应的ResultMap的文件描述:

博为峰JavaEE技术文章 ——MyBatis Mapper ResultMap(4)_第2张图片

这里省略了javaType,默认是ArrayList的集合类。

基于以上的ResultMap的定义,我们可以做如下select定义:

Collocation也可以是使用ResultMap属性定义映射关系。只需要把Hobby单独定义一个ResultMap,并把collection的ResultMap属性值指向新定义的结果集映射即可。

myBatis加载一个聚集还可以使用select方式,它会执行一个其它映射的SQL 语句返回一个Java实体类型。这种做法较灵活但会将执行多次嵌套的SQL语句。这里不再展开赘述。

你可能感兴趣的:(博为峰JavaEE技术文章 ——MyBatis Mapper ResultMap(4))