mybatis分页查询中使用collection标签
时间: 2024-12-08 19:18:18 浏览: 13
在MyBatis中,`<collection>` 标签用于处理关联查询结果集合,特别是在进行分页查询时,它可以帮助你在查询结果集中对子集进行遍历和操作。当你有一个包含列表或其他集合类型的属性,并且需要从数据库一次性获取所有关联数据时,可以使用这个标签。
例如,假设你有一个用户表(User)和一个角色表(Role),每个用户可以有多个角色,你可以这样编写SQL:
```xml
<select id="selectUsersWithRoles" parameterType="map" resultType="User">
SELECT u.*, r.*
FROM User u
LEFT JOIN Role r ON u.id = r.userId
<where>
u.id IN
<foreach item="item" index="index" collection="params" open="(" separator="," close=")">
#{params[index]}
</foreach>
</where>
<!-- 这里使用 <collection> 标签进行分页 -->
<if test="page != null and page.size > 0">
LIMIT #{page.start}, #{page.size}
</if>
</select>
```
在这个例子中,`<collection>` 标签配合`<foreach>` 根据传入的分页参数动态构建SQL的IN子句。然后在查询结果中,`User`对象的`roles`属性将是一个`Role`对象的列表。
阅读全文