PageHelper.startPage() 的解析与使用方法

PageHelper.startPage() 主要用于在 MyBatis 中实现 分页查询,它并不会直接修改 SQL 语句,而是通过 拦截器 动态地在查询语句中添加 LIMIT 子句(或其他数据库分页语法),实现分页的效果。

🔑 PageHelper.startPage() 的作用

PageHelper.startPage(setmealPageQueryDTO.getPage(), setmealPageQueryDTO.getPageSize());

这行代码会根据传入的页码 (page) 和每页大小 (pageSize) 启动分页,并且 不需要手动修改 SQL 查询语句PageHelper 会自动在查询执行前插入分页相关的 SQL 语法。

🔑 工作原理

  1. 拦截器

    • PageHelper 会在 SQL 执行之前通过拦截器动态地修改 SQL 语句,将分页条件(如 LIMIT)添加到查询中。
    • 例如,在 MySQL 中,它会将查询语句转变成类似于:SELECT * FROM setmeal LIMIT 0, 10;这表示从第 0 条记录开始,查询 10 条数据。
  2. 自动分页

    • 你不需要手动在 SQL 中添加 LIMIT 或其他分页语法。只需要在查询之前调用 PageHelper.startPage(page, pageSize)PageHelper 会自动处理。

假设你有一个查询接口,需要根据分页条件获取套餐数据:

PageHelper.startPage(setmealPageQueryDTO.getPage(), setmealPageQueryDTO.getPageSize());
List<Setmeal> setmeals = setmealMapper.selectListByPage(setmealPageQueryDTO);
  • 这里 setmealPageQueryDTO.getPage() 表示当前页码,setmealPageQueryDTO.getPageSize() 表示每页显示的记录数。
  • PageHelper.startPage() 会修改查询语句,确保返回的是分页结果。

🔑 注意

  • PageHelper 对 SQL 的影响PageHelper 主要是通过在查询语句中插入分页语法来完成分页的,它并不会修改你原本的 SQL 逻辑。
  • 查询后获取分页信息:分页查询结束后,可以通过 PageInfo 来获取分页的详细信息,如总页数、总记录数等。

🎯 总结

  • PageHelper.startPage() 是通过 拦截 SQL 来实现分页,不需要手动修改 SQL 语句。
  • 它会在 SQL 语句中自动加入分页条件(例如 LIMIT)。
  • 使用 PageInfo 可以方便地获取分页的详细信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值