mybatis 一对多分页
时间: 2023-12-23 16:28:04 浏览: 126
在MyBatis中进行一对多分页可以采用以下两种方法:
1. 全部查询后手动分页:
首先进行一对多查询,获取所有的结果集。然后根据分页的要求,手动截取需要的结果集返回给前端。这种方式的缺点是每次查询都是全量的,可能会影响性能。
2. 嵌套结果查询进行假分页:
首先进行一对多查询,获取所有的结果集。然后根据分页的要求,手动截取需要的结果集返回给前端。这种方式的缺点是每次查询都是全量的,可能会影响性能。
以下是两种方法的示例代码:
方法一:全部查询后手动分页
```xml
<!-- 查询主表的总条数 -->
<select id="getTotalCount" resultType="int">
SELECT COUNT(*) FROM main_table
</select>
<!-- 查询主表和关联表的数据 -->
<select id="getDataList" resultMap="MainTableResultMap">
SELECT * FROM main_table
LIMIT #{offset}, #{pageSize}
</select>
<!-- 主表和关联表的结果映射 -->
<resultMap id="MainTableResultMap" type="MainTable">
<id property="id" column="id" />
<result property="name" column="name" />
<!-- 其他字段映射 -->
<collection property="subTableList" ofType="SubTable">
<id property="id" column="sub_id" />
<result property="subName" column="sub_name" />
<!-- 其他字段映射 -->
</collection>
</resultMap>
```
方法二:嵌套结果查询进行假分页
```xml
<!-- 查询主表和关联表的数据 -->
<select id="getDataList" resultMap="MainTableResultMap">
SELECT * FROM main_table
</select>
<!-- 主表和关联表的结果映射 -->
<resultMap id="MainTableResultMap" type="MainTable">
<id property="id" column="id" />
<result property="name" column="name" />
<!-- 其他字段映射 -->
<collection property="subTableList" ofType="SubTable">
<id property="id" column="sub_id" />
<result property="subName" column="sub_name" />
<!-- 其他字段映射 -->
</collection>
</resultMap>
```
阅读全文