大连网站平台研发,wordpress作者最新评论,企业 手机网站,微商怎么开店步骤PageHelper 背景解决reasonablepageSizeZero 背景
今天发现了一个很有趣的现象#xff0c;接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据#xff0c;但是目前确一直返回数据不… PageHelper 背景解决reasonablepageSizeZero 背景
今天发现了一个很有趣的现象接手一个很老的项目springmvc项目、使用PageHelper分页实现常见的后端接口分页功能。但是发现当页码参数大于实际的页码数时、正常不应该返回数据但是目前确一直返回数据不知道问题在哪里。
解决
随后查看了PageHelper使用方法很简单跟之前没有任何差异
PageHelper.startPage(pageInfo.getPage(), pageInfo.getRows());接着无意间看到mybatis-config对pagehelper做了些配置
configurationplugins!-- com.github.pagehelper为PageHelper类所在包名 --plugin interceptorcom.github.pagehelper.PageHelperproperty namedialect valuemysql /!-- 该参数默认为false --!-- 设置为true时会将RowBounds第一个参数offset当成pageNum页码使用 --!-- 和startPage中的pageNum效果一样 --property nameoffsetAsPageNum valuetrue /!-- 该参数默认为false --!-- 设置为true时使用RowBounds分页会进行count查询 --property namerowBoundsWithCount valuetrue /!-- 设置为true时如果pageSize0或者RowBounds.limit 0就会查询出全部的结果 --!-- 相当于没有执行分页查询但是返回结果仍然是Page类型 property namepageSizeZero valuetrue/ --!-- 3.3.0版本可用 - 分页参数合理化默认false禁用 --!-- 启用合理化时如果pageNum1会查询第一页如果pageNumpages会查询最后一页 --!-- 禁用合理化时如果pageNum1或pageNumpages会返回空数据 --property namereasonable valuetrue //plugin/plugins
/configuration随后发现了这个参数reasonable不知道其含义但是在项目当中是默认开启的状态、后面一顿搜索查询到了下面的信息才明白原由。
reasonable
作用 定义当设置为 true 时自动修正 非法的分页参数 默认值false不修正非法参数
pageNum 0 → 修正为 pageNum 1pageNum totalPages → 修正为 pageNum totalPages
适用场景
防止前端传递错误页码导致空数据集提升用户体验自动修正无效参数
pageSizeZero
作用 定义当设置为 true 时允许 pageSize0此时分页插件会执行 COUNT 查询但 返回所有数据。 默认值false禁止 pageSize0 适用场景
前端需要获取 全量数据同时得到总记录数特殊业务场景下需要兼容 pageSize0 的请求