SpringBoot实现分页栏固定数量分页
效果图 可以规定分页栏显示的大小
/**
*
* @param number 当前页 1代表第一页
* @param totalPages 总页数
* @param navigatePages 导航栏页码数量
* @param navigatePageNums 导航栏页码数组
*/
public void initNavigatePageNums(int number, int totalPages, int navigatePages, int[] navigatePageNums) {
if (totalPages <= navigatePages) {
// 总页数小于分页数,全部显示
navigatePageNums = new int[totalPages];
for (int i = 0; i < totalPages; i++) {
navigatePageNums[i] = i + 1;
}
} else {
/*
* 可以理下思路
* 当前情况可以分为三种情况
* 1. 当前页在分页栏总数一半之内 (这边又可以分为两种情况)
* 1. 头
* 2. 尾
* 2. 当前页在分页栏总数一半之外
* */
// 定义目标规则
int startNumber = number - navigatePages / 2;
int endNumber = number + navigatePages / 2;
navigatePageNums = new int[navigatePages];
if (startNumber < 1) {
// 头部情况
startNumber = 1;
} else if (endNumber > totalPages) {
// 尾部情况
startNumber = totalPages - navigatePages + 1;
}
/*
* 内部情况可以不做处理
* 上面二种情况的处理主要是为了确定起始下标的位置,
* 而显示的数量已经由navigatePages确定
* */
for (int i = 0, j = startNumber; i < navigatePages; i++, j++) {
navigatePageNums[i] = j;
}
}
}
当前方法可以由当前传入的参数,确定页码数组的数值,这样就实现固定页码数量的分页导航了
值得注意的是: 如果当前初始化分页栏页码方法配合Mybatis,或者JPA分页插件来使用的话,分页将不是问题