PageHelper分页使用

使用tk.mapper mybatis 插件注意点时对于实体类中某字段不是表中字段,处理方式_奋斗者ing的博客-CSDN博客_tkmybatis 忽略字段

【PageHelper】PageHelper分页失效问题排查 - 掘金 (juejin.cn)

Mybatis分页插件PageHelper - 简书 (jianshu.com)

在维护老项目的时候,发现使用的分页框架是 PageHelper。还是写篇笔记记录下。

  • 该项目使用的是 SpringBoot
  • 分页的插件使用的是包(com.github.pagehelper)
<dependency>
    <groupId>com.github.pagehelpergroupId>
    <artifactId>pagehelper-spring-boot-starterartifactId>
    <version>${pagehelper.version}version>
dependency>

在配置文件中的配置:

#pagehelper分页助手
pagehelper:
  helperDialect: mysql
  reasonable: false
  supportMethodsArguments: true
  params: count=countSql

特别提醒下,如果 reasonable 设置为 true 的话,遇到查询页数大于总页数时,查询最后一页的数据

所以会导致,无论 pageNum 参数是多少,总会有数据返回。

代码如下:

@Override
public PageInfo<RulePageDTO> page(RulePageReq req) {

    PageInfo<RulePageDTO> result = PageHelper.startPage(req.getPageNum(), req.getPageSize()).doSelectPageInfo(() -> {
        List<RulePageDTO> page =
            RuleConfigurationMapper.RulePage(req.getStoreName(), req.getName(), req.getState());
    });

    return result;
}

分页的代码确实比较简洁,只有几行就完成分页操作。不过查阅网上相关文章,据说 startPage 方法后要紧跟查询的sql

请求参数

{
    "pageNum": 3,
    "pageSize": 10
}

执行结果日志:

2022-04-12 17:26:43.794 DEBUG 19080 --- [nio-8401-exec-5] c.m.m.I.scheduleRulePage                 : ==>  Preparing: SELECT * FROM rule_configuration t1 INNER JOIN rule_store t2 ON t1.id = t2.rule_id WHERE 1=1 ORDER BY t1.updated_at DESC LIMIT ?, ? 
//可以看到自动拼接了分页的参数
2022-04-12 17:26:43.795 DEBUG 19080 --- [nio-8401-exec-5] c.m.m.I.scheduleRulePage                 : ==> Parameters: 20(Integer), 10(Integer)
2022-04-12 17:26:43.800 DEBUG 19080 --- [nio-8401-exec-5] c.m.m.I.scheduleRulePage                 : <==      Total: 0

mybatis-plus分页可参考:https://blog.csdn.net/mikelv01/article/details/124048620

你可能感兴趣的:(SpringBoot,spring,boot)