使用tk.mapper mybatis 插件注意点时对于实体类中某字段不是表中字段,处理方式_奋斗者ing的博客-CSDN博客_tkmybatis 忽略字段
【PageHelper】PageHelper分页失效问题排查 - 掘金 (juejin.cn)
Mybatis分页插件PageHelper - 简书 (jianshu.com)
在维护老项目的时候,发现使用的分页框架是 PageHelper。还是写篇笔记记录下。
- 该项目使用的是 SpringBoot
- 分页的插件使用的是包(com.github.pagehelper)
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<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