不得不感慨自己的写代码水平还是有很大的提升空间,甚至是我觉得很烂来形容吧,近两天一直有一个项目的分页功能很让我头疼,是一个关于SpringBoot的项目,因为可能平时实战项目做的少,由于是学生的原因吧,反正就是自己的不足,导致这个问题困扰着我,又因为忙着考研,所有最近也没时间花心思来慢慢写和整理,但是一直让我焦急万分啊,于是花了两个晚上细细斟酌别人的代码实现,然后开始啥都不看,自己手写实现全面的分页功能,到现在为止总算是小有所成吧,基本完成需求了。后面会学习PageHelper分页插件简化分页的复杂步骤,但是这种原始的写法,自己一定要随手捏来,十分锻炼水平,后面要更加努力的学习了早上再也不能睡到11点了,太颓废(小声逼逼晚上学习带玩熬夜太晚)哈哈哈!
下面是本次实现分页的代码部分:
首先需要一个关于分页的实体类来映射前后端数据,使其具有完整性,也把代码的冗余性降到了最低水准
package com.liuliu.web;
/**
* @author yuqiliu
* @create 2020-02-19 22:31
*/
import java.util.List;
public class Page<T> {
private int pageNo;//当前是第几页
private List<T> list; //当前显示的图书列表集合
private int pageSize = 3;//页面的尺寸数
public long getTotalItemNumber() {
return totalItemNumber;
}
private long totalItemNumber;//总的条目数
private int totalPageNumber;//总页数
public Page(int pageNo) {
super();
this.pageNo = pageNo;
}
public int getPageNo() {
if(pageNo < 0)
pageNo = 1;
if(pageNo > getTotalPageNumber()){
pageNo = getTotalPageNumber();
}
return pageNo;
}
public Page() {
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageSize() {
return pageSize;
}
public void setList(List<T> list) {
this.list = list;
}
public List<T> getList() {
return list;
}
public void setTotalPageNumber(int totalPageNumber) {
this.totalPageNumber = totalPageNumber;
}
public int getTotalPageNumber(){
totalPageNumber = (int)totalItemNumber / pageSize;
if(totalItemNumber % pageSize != 0){
totalPageNumber++;
}
return totalPageNumber;
}
public void setTotalItemNumber(long totalItemNumber) {
this.totalItemNumber = totalItemNumber;
}
public boolean isHasNext(){
if(getPageNo() < getTotalPageNumber()){
return true;
}
return false;
}
public boolean isHasPrev(){
if(getPageNo() > 1){
return true;
}
return false;
}
public int getPrevPage(){
if(isHasPrev()){
return getPageNo() - 1;
}
return getPageNo();
}
public int getNextPage(){
if(isHasNext()){
return getPageNo() + 1;
}
return getPageNo();
}
}