java - 现在我已经将数据全部查询出来并在页面显示了,在这个前提下 我怎么把已经查询出来的数据 分页
阿神
阿神 2017-04-18 09:25:26

内容已经在jsp页面 显示出来了
现在是单纯的 把已经查询出来的98条数据 做个分页

阿神
阿神

闭关修行中......

reply all(7)
黄舟

hibernate自带了支持多数据库的分页,或者你也可以写一个Page类在后台获取数据的时候就分页。网上也有很多分页算法,例如:百度的分页,google的分页。然后前台就好做了,只是让分页的内容显示出来就可以。
以下是百度分页算法参考:

public class BaiduPage {
    /**
     * 数据库一共多少行
     */
    private int rowCount;
    /**
     * 数据库查询其实行
     */
    private int startRow;
    /**
     * 当前页面导航序号
     */
    private int num;
    /**
     * 一页查询多少行
     */
    private int pageSize=10;
    /**
     * 一共有多少导航
     */
    private int navCount;
    /**
     * 上一页
     */
    private int prev;
    /**
     * 下一页
     */
    private int next;
    /**
     * 首页
     */
    private int first=1;
    /**
     * 尾页
     */
    private int last;
    /**
     *显示导航的起始
     */
    private int begin ;
    /**
     * 显示导航的结束
     */
    private int end;
    public BaiduPage() {
        super();
    }
    
    /**
     * @param rowCount
     * @param num
     * @param pageSize
     */
    public BaiduPage(int rowCount, int num, int pageSize) {
        super();
        //查询到的行数
        this.rowCount = rowCount;
        //每页显示数量
        this.pageSize = pageSize;
        //导航页面数=(向上取整)(行数/每页显示数量)
        this.navCount=(int) Math.ceil(this.rowCount*1.0/this.pageSize);
        this.last=this.navCount;
        //小于最小值 显示为第一页
        this.num =  Math.max(this.first, num);
        //大于最大值 显示为最后一页
        this.num=Math.min(this.last, num);
        //当前页面显示的起始行 =(当前页面-1)*10且大于等于0
        this.startRow=Math.max(0,(this.num-1)*this.pageSize);
        
        this.prev=Math.max(this.first, (this.num-1));
        this.next=Math.min(this.last, this.num+1);
        //显示导航的起始 小于10从第一页显示,大于10只显示10页
        this.begin=(this.num-this.first)<=10?this.first:(this.num-10);
        //显示导航的结束 小于9显示到最后一页,大于9显示9页
        this.end=(this.last-this.num)<9?this.last:(this.num+9);
    }
    public int getRowCount() {
        return rowCount;
    }
    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
    }
    public int getStartRow() {
        return startRow;
    }
    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getNavCount() {
        return navCount;
    }
    public void setNavCount(int navCount) {
        this.navCount = navCount;
    }
    public int getPrev() {
        return prev;
    }
    public void setPrev(int prev) {
        this.prev = prev;
    }
    public int getNext() {
        return next;
    }
    public void setNext(int next) {
        this.next = next;
    }
    public int getFirst() {
        return first;
    }
    public void setFirst(int first) {
        this.first = first;
    }
    public int getLast() {
        return last;
    }
    public void setLast(int last) {
        this.last = last;
    }
    public int getBegin() {
        return begin;
    }
    public void setBegin(int begin) {
        this.begin = begin;
    }
    public int getEnd() {
        return end;
    }
    public void setEnd(int end) {
        this.end = end;
    }    
}

以下是Google分页算法参考:

import java.util.List;

/**
 * google 和baidu不同之处在于google只显示10页导航
 * @author Administrator
 *
 */
public class GooglePage {
    /**
     * 数据库一共多少行
     */
    private int rowCount;
    /**
     * 数据库查询其实行
     */
    private int startRow;
    /**
     * 当前页面导航序号
     */
    private int num;
    /**
     * 一页查询多少行
     */
    private int pageSize=10;
    /**
     * 一共有多少导航
     */
    private int navCount;
    /**
     * 上一页
     */
    private int prev;
    /**
     * 下一页
     */
    private int next;
    /**
     * 首页
     */
    private int first=1;
    /**
     * 尾页
     */
    private int last;
    /**
     *显示导航的起始
     */
    private int begin ;
    /**
     * 显示导航的结束
     */
    private int end;
    /**
     * 控制导航显示数量
     */
    private int navNum;
    
    private List pageData;
    
    public GooglePage() {
        super();
    }
    
    /**
     * @param rowCount
     * @param num
     * @param pageSize
     */
    public GooglePage(int rowCount, int num, int pageSize,int navNum) {
        super();
        //查询到的行数
        this.rowCount = rowCount;
        //每页显示数量
        this.pageSize = pageSize;
        //导航页面数=(向上取整)(行数/每页显示数量)
        this.navCount=(int) Math.ceil(this.rowCount*1.0/this.pageSize);
        this.last=this.navCount;
        //小于最小值 显示为第一页
        this.num =  Math.max(this.first, num);
        //大于最大值 显示为最后一页
        this.num=Math.min(this.last, num);
        //当前页面显示的起始行 =(当前页面-1)*10且大于等于0
        this.startRow=Math.max(0,(this.num-1)*this.pageSize);
        
        this.prev=Math.max(this.first, (this.num-1));
        this.next=Math.min(this.last, this.num+1);
        //显示导航的起始 
//        this.begin=(this.num-this.first)<=10?this.first:(this.num-10);
        //显示导航的结束 小于9显示到最后一页,大于9显示9页
//        this.end=(this.last-this.num)<9?this.last:(this.num+9);
        this.navNum=navNum;
        //google 如果显示10个,前5后4
        this.begin=Math.max(this.first, this.num-this.navNum/2);
        this.end=Math.min(this.last, this.begin+this.navNum-1);
        //如果begin到end不够10个,显示后10个
        if ((this.end-this.begin)<(this.navNum-1)) {
            this.begin=Math.max(this.first, this.last-this.navNum+1);
        }        
    }
    public int getRowCount() {
        return rowCount;
    }
    public void setRowCount(int rowCount) {
        this.rowCount = rowCount;
    }
    public int getStartRow() {
        return startRow;
    }
    public void setStartRow(int startRow) {
        this.startRow = startRow;
    }
    public int getNum() {
        return num;
    }
    public void setNum(int num) {
        this.num = num;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
    public int getNavCount() {
        return navCount;
    }
    public void setNavCount(int navCount) {
        this.navCount = navCount;
    }
    public int getPrev() {
        return prev;
    }
    public void setPrev(int prev) {
        this.prev = prev;
    }
    public int getNext() {
        return next;
    }
    public void setNext(int next) {
        this.next = next;
    }
    public int getFirst() {
        return first;
    }
    public void setFirst(int first) {
        this.first = first;
    }
    public int getLast() {
        return last;
    }
    public void setLast(int last) {
        this.last = last;
    }
    public int getBegin() {
        return begin;
    }
    public void setBegin(int begin) {
        this.begin = begin;
    }
    public int getEnd() {
        return end;
    }
    public void setEnd(int end) {
        this.end = end;
    }

    public int getNavNum() {
        return navNum;
    }

    public void setNavNum(int navNum) {
        this.navNum = navNum;
    }

    public List getPageData() {
        return pageData;
    }

    public void setPageData(List pageData) {
        this.pageData = pageData;
    }
    
}
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!