pagehelper分页中pageSize等于total的问题【结合源码分析】pagehelper分页中pageSize等于total的问题【结合源码分析】
在使⽤MyBatis分页插件PageHelper时,在编码时不注意就会调⼊这个坑;在使⽤PageHelper进⾏数据分页时,
PageHelper.startPage()必须放在数据集查询的前⾯,这样查询出来的分页参数信息才能正确被赋值,如果该初始化参数⽅法放在查询数据集后⾯,将会导致如下结果:
pageSize = size = total
原因是什么,我们打断点来看下PageInfo的源码:
public PageInfo(List<T> list, int navigatePages) {
super(list);
this.isFirstPage = false;
this.isLastPage = false;
this.hasPreviousPage = false;
this.hasNextPage = false;
if (list instanceof Page) {
Page page = (Page)list;
this.pageNum = PageNum();
this.pageSize = PageSize();
this.pages = Pages();
this.size = page.size();
if (this.size == 0) {
this.startRow = 0;
} else {
this.startRow = StartRow() + 1;
}
} else if (list instanceof Collection) {
this.pageNum = 1;
this.pageSize = list.size();
this.pages = this.pageSize > 0 ? 1 : 0;
分页查询插件
this.size = list.size();
this.startRow = 0;
}
if (list instanceof Collection) {
this.navigatePages = navigatePages;
this.calcNavigatepageNums();
this.calcPage();
this.judgePageBoudary();
}
}
如果没有提前初始化分页属性,则参数list instanceof Collection,这样⼀来:
this.pageSizze = list.size(); this.size = pageSize; 即数据集的length,这样得出来的分页信息就没作⽤,都在⼀页展⽰了,达不到分页效果。
如果程序⾛到如下步骤,则就需要在查询数据集前提前初始化分页信息:
PageHelper.startPage(pageNum, pageSize, orderBy); // 初始化page信息。
这样查询出来的数据就能正常显⽰分页了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。