mybatis collection 的用法
时间: 2023-11-19 16:06:15 浏览: 71
MyBatis 提供了 Collection 类型的参数来处理数据库查询结果中的集合类型字段。在 MyBatis 中,Collection 类型主要用于处理一对多或多对多的关联关系。
在映射文件(mapper.xml)中,可以使用 Collection 元素来定义集合类型字段的映射规则。以下是一个示例:
```xml
<resultMap id="userMap" type="User">
<id property="id" column="id" />
<result property="username" column="username" />
<collection property="roles" ofType="Role">
<id property="id" column="role_id" />
<result property="name" column="role_name" />
</collection>
</resultMap>
```
在上述示例中,通过 Collection 元素定义了一个名为 "roles" 的集合属性。ofType 属性指定了集合中元素的类型,这里是 Role 类型。内部的 id 和 result 元素用于指定集合中元素的映射规则。
然后,在查询语句中可以使用嵌套的 select 元素来查询关联的集合数据。例如:
```xml
<select id="getUserWithRoles" resultMap="userMap">
SELECT u.id, u.username, r.id AS role_id, r.name AS role_name
FROM users u
LEFT JOIN user_roles ur ON u.id = ur.user_id
LEFT JOIN roles r ON ur.role_id = r.id
WHERE u.id = #{id}
</select>
```
在上述示例中,查询语句使用了 LEFT JOIN 连接了 users、user_roles 和 roles 表,并返回了包含用户及其关联角色数据的结果集。
当执行查询操作时,MyBatis 会自动将查询结果中的集合类型字段映射到对应的 Java 对象中的集合属性上,完成一对多或多对多的关联查询。
希望能解答您的问题,如果还有其他问题,请继续提问!
阅读全文