怎样用java做一个分页工具类

每页显示10,20,50,100条数据。因为好几个页面都需要用到分页,因此希望抽取出来,怎么做呢

这个感觉并不需要工具类的样子呀 你的分页并不清楚具体要用什么实现 说一个假设的 js查询 10 20 50 100条这个样子 将每一个要分页的查询方法都设置成有参的,然后把你每页需要显示的条数和第几页传入进去不就可以的到了吗? 或者说你的分页并不是我想的这样 麻烦补充下问题,我们再来讨论

图片说明
就这样,每个页面都需要可以设置每页显示多少条,点击换显示的条数时发送异步请求到控制层(springmvc)就这样子。

import java.util.List;

/**

  • 分页类
  • @author hxl
  • @param */

public class Page {

private final static int PAGEITEMCOUNT = 10;  //显示页码条目数,即页码数量顶多是10个  

private List<T> list;         //保存查询的结果集合  
private int totalRecord;        //总记录数  
private int pageSize = 5;       //页面显示的数目  
private Integer totalPage;          //总页码数  
private int currentPage = 1;    //当前页码  
private int previousPage;       //前一页  
private int nextPage;           //后一页  
private int[] pageBar;          //条目数  
private int startIndex;         //开始页  
private int endIndex;           //结束页  

/* public int getSelectEndIndex() { //oracle中的结束查询条件,供传入数据库参数使用
return this.getStartIndex()+this.pageSize - 1;

}*/

public int getStartIndex() {  
    this.startIndex = (this.currentPage-1)*this.pageSize;     
    return startIndex;  
}  
public void setStartIndex(int startIndex) {  
    this.startIndex = startIndex;  
}  
public int getEndIndex() {   //从数据库中获取的结束索引,供页面使用  
    int end = this.getStartIndex() + this.getPageSize();  //不包含最后一条记录-1  
    if(end>this.getTotalRecord()){  
        end = this.getStartIndex() + (this.getTotalRecord()%this.getPageSize());  
    }  
    this.endIndex = end;  
    return this.endIndex;  
}  
public void setEndIndex(int endIndex) {  
    this.endIndex = endIndex;  
}  
public List<T> getList() {  
    return list;  
}  
public void setList(List<T> list) {  
    this.list = list;  
}  
public int getTotalRecord() {  
    return totalRecord;  
}  
public void setTotalRecord(int totalRecord) {  
    this.totalRecord = totalRecord;  
}  
public int getPageSize() {  
    return pageSize;  
}  
public void setPageSize(int pageSize) {  
    this.pageSize = pageSize;  
}  
public Integer getTotalPage() {             //得到总页码数  
    if(this.totalRecord%this.pageSize==0){  
        this.totalPage = this.totalRecord/this.pageSize;  
    }else{  
        this.totalPage = this.totalRecord/this.pageSize+1;  
    }  

    return totalPage;  
}  

public int getCurrentPage() {  
    return currentPage;  
}  
public void setCurrentPage(int currentPage) {  
    this.currentPage = currentPage;  
}  
public int getPreviousPage() {  
    if(this.currentPage-1<1){      //如果上一页小于1,则说明当前页码已经是第一页了  
        this.previousPage = 1;  
    }else{  
        this.previousPage = this.currentPage-1;  
    }  
    return previousPage;  
}  

public int getNextPage() {             
    if(this.currentPage+1>=this.totalPage){   //如果下一页大于总数页,则说明当前页码已经是最后一页了  
        this.nextPage = this.totalPage;  
    }else{  
        this.nextPage = this.currentPage +1;  
    }  
    return nextPage;  
}  

public int[] getPageBar() {  
    int startPage;      //记住页码的起始位置  
    int endPage;        //记住页码的结束位置,因为页码条目是既定的,由startpage,endpage两个变量通过循环就可以得全部页码  
    int pageBar[] = null;  
    if(this.getTotalPage() <= PAGEITEMCOUNT){    //当总页码不足或等于既定页面大小时  
        pageBar = new int[this.totalPage];  
        startPage = 1;  
        endPage = this.totalPage;  
    }else{                  //当总页码大于既定页面大小时  
        pageBar = new int[PAGEITEMCOUNT];  
        startPage = this.currentPage - (PAGEITEMCOUNT/2-1);    //为了保证当前页在中间  
        endPage = this.currentPage + PAGEITEMCOUNT/2;  

        if(startPage<1){  
            startPage = 1;  
            endPage = PAGEITEMCOUNT;  
        }  

        if(endPage>this.totalPage){  
            endPage = this.totalPage;  
            startPage = this.totalPage - (PAGEITEMCOUNT-1);  
        }  
    }  

    int index = 0;  
    for(int i=startPage;i<=endPage;i++){  
        pageBar[index++] = i;  
    }  

    this.pageBar = pageBar;  
    return this.pageBar;  
}  

}

java这边就是数据库查询时做些操作,具体查多少条是页面控制的,你需要获取页面参数去数据库查询返回页面。
工具类,用Mybatis的话可以试试github上的pagehelper

前端页面上有很多种插件的可以搜一下,或者用框架。后台代码的话给你一个简单的思路:
1、前端的分页结构:{ 记录当前第几页: page, 当前分页为每页多少行: pageSize };
2、点击上一页page + 1,点击下一页page - 1,选择当前分页行数pageSize = n(你选择的分页行数);
3、后台接收上面两个数据(page, pageSize);
4、sql查询逻辑构造(以mysql为例):select * from table_x where condition = something limit (page -1 ) * pageSize , pageSize;
这里数据库行数是从0开始算的,注意联系自己的数据库实际情况