相信大家在学习Java的时候多多少少都接触过Java的分页功能,也自己写过一些简单的分页的工具类,下面给大家分享一下我自己编写的一个纯Java的分页工具类。(直接可用)
package cn.edu.imufe.exam.domain;
import lombok.Data;
import java.util.List;
@Data
public class Page<T> {
/**
* 当前页是多少;
*/
private int pageNum;
/**
* 每页显示的条数;
*/
private int pageSize;
/**
* 总的记录条数。查询数据库得到的数据;
*/
private int totalRecord;
/**
* 总页数,通过计算得到;
*/
private int totalPage;
/**
* 开始索引,也就是从第几行开始拿数据,有了startIndex和pageSize,就知道了limit的两个参数了
*/
private int startIndex;
/**
* 通过计算得到,分页显示的页数,
*/
private int start;
private int end;
/**
* 构造方法初始化对象;
*/
private List<T> list;
/**
* 分页跳转url
*/
private String pageUrl;
/**
* 分页初始化
* @param pageNum 用户要到的页数
* @param pageSize 每页显示的数据的条数
* @param totalRecord 总的记录数
* @param url 点击进行跳转时候的url ,不带参数
* @param data 模糊查询等问题的参数(条件参数)
*/
public Page(int pageNum,int pageSize,int totalRecord,String url,String data) {
this.pageNum = pageNum;
this.pageSize = pageSize;
this.totalRecord = totalRecord;
String pageHtml = "";
if(totalRecord != 0){
//totalPage计算总页数
if(totalRecord%pageSize==0) {
//整除的情况下就不需要进行多余的分页;
this.totalPage = totalRecord/pageSize;
}else {
//不整除的情况下多加一页;
this.totalPage = (totalRecord/pageSize)+1;
}
//计算开始的索引;
this.startIndex = (pageNum-1)*pageSize;
this.start = 1;
this.end = 5;
//显示页数的算法
if(totalPage<=5) {
this.end = this.totalPage;
}else {
//总页数大于6
this.start = pageNum-2;
this.end = pageNum+2;
if(start<0) {
//排除为第一页和第二页的情况
this.start = 1;
this.end = 5;
}
if(end > this.totalPage) {
this.end = totalPage;
this.start = end - 5;
}
}
pageHtml += "共"+this.totalPage+"页数据 当前第" + pageNum + "页 ";
//首页
if ("".equals(data)){
pageHtml += " <a href=\""+url+"?pageNum=1\"> 首页 </a>";
}else{
pageHtml += " <a href=\""+url+"?pageNum=1&data="+data+"\"> 首页 </a>";
}
//
//如果当前为第一页就没有上一页这个超链接
if(pageNum == 1){
for (int i=this.start;i<=this.end;i++){
//当前页不显示超链接
if (pageNum == i){
pageHtml += " " + i + " ";
}else if (pageNum != i){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"\"> "+i+" </a>" +" ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"&data="+data+"\"> "+i+" </a>" +" ";
}
}
}
if (pageNum != this.totalPage){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum+1)+"\"> 下一页> </a>" + " ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum+1)+"&data="+data+"\"> 下一页> </a>" + " ";
}
}
}
//不是第一页也不是最后一页
if(pageNum > 1 && pageNum <this.totalPage){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum-1)+"\"> <上一页 </a>" + " ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum-1)+"&data="+data+"\"> <上一页 </a>" + " ";
}
for (int i=this.start;i<=this.end;i++){
//当前页不显示超链接
if (pageNum == i){
pageHtml += " " + i + " ";
}else if (pageNum != i){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"\"> "+i+" </a>" +" ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"&data="+data+"\"> "+i+" </a>" +" ";
}
}
}
if (pageNum != this.totalPage){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum+1)+"\"> 下一页> </a>" + " ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum+1)+"&date="+data+"\"> 下一页> </a>" + " ";
}
}
}
//如果当前页是最后一页,则只有上一页这个超链接显示,下一页没有
if(pageNum != 1 && pageNum == this.totalPage){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum-1)+"\"> <上一页 </a>" + " ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+(pageNum-1)+"&data="+data+"\"> <上一页 </a>" + " ";
}
for (int i=this.start;i<=this.end;i++){
//当前页不显示超链接
if (pageNum == i){
pageHtml += " " + i + " ";
}else if (pageNum != i){
if ("".equals(data)){
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"\"> "+i+" </a>" +" ";
}else{
pageHtml += " " + "<a href=\""+url+"?pageNum="+i+"&data="+data+"\"> "+i+" </a>" +" ";
}
}
}
}
//尾页
pageHtml += " " + "<a href=\""+url+"?pageNum="+(this.totalPage)+"&data="+data+"\"> 尾页 </a>" + " ";
this.pageUrl = pageHtml;
}else if (totalRecord == 0){
pageHtml += "共1页数据 当前第1页 ";
//首页
if ("".equals(data)){
pageHtml += " <a href=\""+url+"?pageNum=1\"> 首页 </a>";
pageHtml += " " + "<a href=\""+url+"?pageNum=1\"> 尾页 </a>" + " ";
}else{
pageHtml += " <a href=\""+url+"?pageNum=1&data="+data+"\"> 首页 </a>";
pageHtml += " " + "<a href=\""+url+"?pageNum=1&data="+data+"\"> 尾页 </a>" + " ";
}
//尾页
this.pageUrl = pageHtml;
}
}
}