<collection> 和 <association> 是 MyBatis 中用于定义映射关系的标签,它们的区别如下:
目标对象类型:
<collection> 用于表示集合属性,即一个属性对应多个关联对象。
<association> 用于表示关联属性,即一个属性对应一个关联对象。
关联关系处理:
<collection> 用于处理一对多或多对多的关联关系,其中集合属性将包含对应的关联对象的集合。
<association> 用于处理一对一或多对一的关联关系,其中关联属性将包含对应的关联对象。
SQL 查询方式:
<collection> 通常需要执行额外的 SQL 查询来获取关联对象的数据,通常需要使用 select 子句指定查询语句。
<association> 通常会在关联对象的查询语句中使用 join 操作,将关联对象的数据与当前对象的数据一起查询出来。
映射方式:
<collection> 通常在结果映射中使用嵌套的 <resultMap> 定义,以映射关联对象的属性。
<association> 通常在结果映射中使用 <result> 标签定义,以映射关联对象的属性。
总结起来,<collection> 用于表示一对多或多对多的集合属性,并需要执行额外的 SQL 查询来获取关联对象的数据,而 <association> 用于表示一对一或多对一的关联属性,并使用 join 操作将关联对象的数据与当前对象一起查询出来。
原文链接
JAVATYPE和OFTYPE的区别?
- JavaType:实体类中属性的类型。
- OfType:泛型的类型。用来指定映射到集合中的pojo的类型