【为什么pageHelper超过最大页数后还会返回数据】

为什么pageHelper超过最大页数后还会返回数据

pageHelper分页查询插件,当pageNum很大时,超过最大页数,都会默认返回最后一也的东西。

原因:这是pageHelper里面自带的一个功能,叫做reasonable分页参数合理化,3.3.0以上版本可用,默认是false。 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页; 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据。

解决:一般项目里面加入,
Spring Boot项目里面:pagehelper.reasonable=false

### PageHelper 分页插件中总页数的计算与设置 在使用 `PageHelper` 进行分页查询之后,可以通过 `PageInfo` 对象来获取分页结果中的各种信息,其中包括总页数。具体来说,在执行分页查询后调用 `PageHelper.startPage()` 方法,随后立即执行 SQL 查询语句,接着创建一个新的 `PageInfo<T>` 实例传入查询的结果集列表。 #### 获取总页数 要得到总页数,可以直接访问 `PageInfo` 中名为 `getPages()` 的 getter 方法: ```java // 假设已经完成了分页查询并将结果存储到了 list 变量中 List<YourEntity> list = yourMapper.selectByExample(example); PageInfo<YourEntity> pageInfo = new PageInfo<>(list); int totalPages = pageInfo.getPages(); // 获得总页数 ``` 此方法返回的是基于当前设定每页显示记录条目数量下所对应的页面总数[^2]。 #### 设置合理的分页参数 对于某些特殊情况下的处理需求,比如当请求超出有效范围时如何响应,可以在配置文件里调整如下选项以确保逻辑更加健壮: - **reasonable**: 启用合理化模式意味着即使输入不合法的页码也会被修正到最接近的有效值上(即小于最小则取首页,大于最大则取末页)。反之,则可能返回空白数据。 ```yaml pagehelper.reasonable=true ``` 这种机制有助于防止因前端传递错误参数而导致服务端异常终止的情况发生[^5]。 另外值得注意的一点是,虽然可以自定义一些行为特性,但是像“总页数”的核心算法是由框架内部决定好的,并不需要开发者额外去修改或重写它的工作流程[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值