在MyBatis中,<association>和<collection>都是用于处理复杂对象关系映射的关键元素,但它们针对的对象关系类型不同。
Association(一对一关联)
用途:<association>标签主要用于处理一对一的关系。例如,一个用户(User)对应一个账户(Account)。
使用场景:当你需要从数据库查询一条记录,并且这条记录与另一个实体存在一对一的关系时,你可以使用<association>来映射这种关系
示例:
<resultMap id="userResultMap" type="User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<association property="account" javaType="Account">
<id property="accountId" column="account_id"/>
<result property="accountName" column="account_name"/>
</association>
</resultMap>
在这个例子中,User类有一个Account类型的属性,通过<association>标签将查询结果中的相关字段映射到Account对象上。
Collection(一对多关联)
用途:<collection>标签用于处理一对多的关系。例如,一个部门(Department)对应多个员工(Employee)。
使用场景:当你需要从数据库查询一条记录,并且这条记录与另一个实体存在一对多的关系时,可以使用<collection>来映射这种关系。
示例:
<resultMap id="departmentResultMap" type="Department">
<id property="deptId" column="dept_id"/>
<result property="deptName" column="dept_name"/>
<collection property="employees" ofType="Employee">
<id property="empId" column="emp_id"/>
<result property="empName" column="emp_name"/>
</collection>
</resultMap>
这里,Department类有一个List<Employee>类型的属性,通过<collection>标签将查询结果中的相关字段映射到Employee对象列表上。
总结
- <association>用于一对一的关联映射,表示外部对象是一个单独的实例。
- <collection>用于一对多的关联映射,表示外部对象包含了一个集合或列表的实例。
1万+

被折叠的 条评论
为什么被折叠?



