Mybatis collection与association的区别解析

版权申诉
6 下载量 188 浏览量 更新于2024-09-11 收藏 65KB PDF 举报
"这篇文章除了介绍Mybatis中`collection`和`association`的使用区别,还通过实例解析了一对一和一对多的关系映射。" 在Mybatis框架中,`collection`和`association`是用来处理对象之间的关联关系,它们在映射XML配置文件中扮演着关键角色。这篇文章主要探讨了这两个概念的区别,并通过具体的Java类和映射示例进行了解析。 1. 关联 - association `association` 主要用于表示一对一(1:1)或一对多(1:n)的关系,其中一方(通常是主表)包含另一方(从表)的一个实例。例如,在`User.java`类中,`card_one`属性就是与`Card`类的一个实例关联,这通常代表一个用户只有一个主卡。在映射时,我们使用`association`标签来处理这种关系。下面是一个示例: ```xml <!-- Person的映射文件 --> <resultMap id="personMap" type="com.glj.poji.Person"> <!-- ...其他属性映射... --> <association property="card" javaType="com.glj.poji.Card"> <id property="id" column="card_id"/> <!-- ...其他Card属性映射... --> </association> </resultMap> ``` 2. 集合 - collection `collection` 则用于表示一对多(1:n)或多对多(m:n)的关系,其中一个实体可以拥有多个关联实体的实例。在`User.java`类中,`card_many`属性是一个`Card`对象的列表,代表一个用户可以有多个副卡。映射时,我们使用`collection`标签来处理这种关系。以下是一个示例: ```xml <!-- User的映射文件 --> <resultMap id="userMap" type="com.glj.poji.User"> <!-- ...其他属性映射... --> <collection property="card_many" javaType="java.util.List" ofType="com.glj.poji.Card"> <id property="id" column="card_id"/> <!-- ...其他Card属性映射... --> </collection> </resultMap> ``` 在实际应用中,我们需要根据业务需求选择合适的标签。对于一对一的关系,如人与身份证,我们使用`association`;而对于一对多的关系,如用户与多张卡片,我们使用`collection`。正确理解和使用这两个标签,能帮助我们更有效地在Mybatis中构建复杂的数据对象关系。