Page 对象介绍

MyBatis-Plus 提供的分页核心类:

com.baomidou.mybatisplus.extension.plugins.pagination.Page<T>

这个类是 MP 规定好固定结构的,里面几个字段是分页必备、框架自动赋值,开发者只需要直接使用即可。

Page 五大核心字段含义

字段 含义 通俗解释
records 当前页数据列表 当前这一页查到的业务数据集合
total 总记录数 符合查询条件的所有数据总条数
size 每页条数 每一页展示多少条数据
current 当前页码 当前正在查询的是第几页
pages 总页数 所有数据一共能分成多少页,框架自动计算

一句话概括:current、size 是你传给框架的;records、total、pages 是框架自动帮你查好、算好返回的。

业务场景举例

网点订单每日统计分页为例:需求:分页查询网点每日订单统计,查询第 1 页,每页 10 条

假设数据库一共有 105 条 网点每日统计数据。

1、分页结构示例

{
  "current": 1,
  "size": 10,
  "records": [
    {"orgId":101,"todayDeltaCount":8},
    {"orgId":102,"todayDeltaCount":12}
    // ... 共10条
  ],
  "total": 105,
  "pages": 11
}

2、字段对应解释

  • current = 1:查询的是第 1 页
  • size = 10:每页展示 10 条
  • records:第 1 页真正的 10 条统计数据
  • total = 105:全部符合条件的数据一共 105 条
  • pages = 11:总页数 11 页(105 ÷ 10 向上取整)

3、总页数计算规则

MyBatis-Plus 自动帮我们计算,不用自己写代码:

总页数 pages = 总记录数 total ÷ 每页条数 size,向上取整

五、代码实战用法

1、创建分页对象

// 参数1:当前页码  参数2:每页条数
Page<OrderDailyStatDTO> page = new Page<>(1L, 10L);

2、Mapper 分页查询

IPage<OrderDailyStatDTO> selectOrderStatPage(Page<OrderDailyStatDTO> page);

只需要把 Page 当参数传进去,MyBatis-Plus 自动分页、自动查总数、自动封装所有字段

3、获取分页所有属性

IPage<OrderDailyStatDTO> resultPage = orderDailyStatMapper.selectOrderStatPage(page);

// 当前页码
long current = resultPage.getCurrent();
// 每页条数
long size = resultPage.getSize();
// 总记录数
long total = resultPage.getTotal();
// 总页数
long pages = resultPage.getPages();
// 当前页数据列表
List<OrderDailyStatDTO> records = resultPage.getRecords();

开发优势

  1. 不用手动写 SQL 统计总条数,MP 自动帮你执行 count 查询;
  2. 不用自己计算总页数,框架自动向上取整;
  3. 前后端交互字段统一,前端直接拿 current /size/total /pages 做分页组件;
  4. 所有项目通用,规范统一,可读性强。

总结

  1. MyBatis-Plus 的 Page<T> 是官方标准分页对象,字段固定;
  2. 五大核心:current当前页、size每页条数、records本页数据、total总记录数、pages总页数;
  3. 只需传入页码和页条数,框架自动查询、自动计算、自动封装;
  4. 所有列表分页、统计分页都可以直接复用这套结构。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐