关于pagehelper分页无法使用的情况下进行分页,以及对显示页码navigatePages限制

发布时间 2023-09-20 17:24:01作者: 术数才是真理

Integer pageNum =1;
Integer pageSize = 10;
//计算总数
int total = list==null?0:list.size();
//计算总页数
int pageSum = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
PageHelper.startPage(pageNum, pageSize);

//开始分页
List<ActTrsDetailDto> collect = list.stream()
.skip((pageNum - 1) * pageSize)
.limit(pageSize).collect(Collectors.toList());
PageInfo<ActTrsDetailDto> pageInfo = new PageInfo<>(collect,5);
pageInfo.setPages(pageSum);
pageInfo.setTotal(total);

//设置页码显示5页
int[] k = new int[5];
if (pageNum==1){
for (int j = 0; j < 5; j++) {
k[j] = pageNum + j;
}
}else if (pageNum-1==1){
for (int j = 0; j < 4; j++) {
k[j+1] = pageNum + j;
}
k[0]=pageNum-1;
}else if (pageNum==pageSum) {
int z=4;
for (int j = 1; j < 6; j++) {
k[j - 1] = pageNum - z;
z--;
}
k[4]=pageSum;
}else if (pageSum-pageNum==1){
int z=3;
for (int j = 1; j < 5; j++) {
k[j - 1] = pageNum - z;
z--;
}
k[4]=pageSum;
}else {
int z=2;
int j=1;
for (int i = 0; i <5; i++) {
if (i<2){
k[i]=pageNum- z;
z--;
}
if (i==2){
k[i]=pageNum;
}
if (i>2){
k[i]=pageNum+j;
j++;
}
}
}
pageInfo.setPrePage(pageNum-1);
pageInfo.setNextPage(pageNum==pageSum?0:pageNum+1);
pageInfo.setNavigatepageNums(k);
PageHelper.clearPage();
return pageInfo;