Java如何实现分页

先阐述一下具体的思路:

  1. 第一步:编写一个分页的类里面包含了(第一页,最后一页,下一页,上一页,当前页,页码等等)对象和方法。
  2. 第二步:进行分页的业务处理。

> ------**分页类**------------

package newRelease.dao;

import java.util.ArrayList;
/**
 * 
 * @author wfy
 *  分页算法  根据总记录数,和每页显示记录数实现分页功能
 * @param <T>
 */
public class PageBean<T>{

    private ArrayList<T> pageList;  //ArrayList泛型
    private int pageSize;    //每页多少条记录
    private int rowCount;    //总共有多少条记录
    private int totalPage;   //总共有多少页
    private int currentPage;   //当前页码
    private boolean firstPage;  //第一页,bool类型
    private boolean lastPage;   //最后一页,bool类型
    private int previousPageCount;   //前一页
    private int nextPageCount;       //后一页
    private int beginPage;        //开始页
    private int endPage;          //尾页

    public PageBean()
    {
        pageSize = 4;     //设置一页只有4条记录
    }

    public void setPageList(ArrayList<T> pageList)  
    {
        this.pageList = pageList;    //设置PageList对象
    }

    public ArrayList<T> getPageList()
    {
        return pageList;
    }

    public int getRowCount()
    {
        return rowCount;
    }

    public void setRowCount(int rowCount)
    {
        this.rowCount = rowCount;
        totalPage = rowCount % pageSize != 0 ? rowCount /                     pageSize + 1 : rowCount / pageSize;      
        //使用了if : 条件运算符
    }

    public int getCurrentPage()
    {
        return currentPage;
    }

    public void setCurrentPage(int currentPage)
    {
        this.currentPage = currentPage;
        //判断如果超过了totalPage
        if(currentPage > totalPage)
        {
            this.currentPage = totalPage;
        }
        if(currentPage < 1)
        {
            this.currentPage = 1;
        }
        previousPageCount = currentPage - 1;
        nextPageCount = currentPage + 1;
        //如果当前页是第一页,则为首页
        if(this.currentPage == 1)
        {
            firstPage = true;
        } else
        {
            firstPage = false;
        }
        if(this.currentPage == totalPage)
        {
            lastPage = true;
        } else
        {
            lastPage = false;
        }
        //对需要显示的页码进行判断从beginPage开始,endPage结束
        beginPage = this.currentPage <= 5 ? 1 : this.currentPage;
        endPage =  beginPage >=totalPage - 5 ? totalPage:beginPage +5;
        if(endPage - 5 > 0 && endPage - 5 < beginPage)
        {
            beginPage = endPage - 5;
        }
    }

    public int getPreviousPageCount()
    {
        return previousPageCount;
    }

    public int getNextPageCount()
    {
        return nextPageCount;
    }

    public int getPageSize()
    {
        return pageSize;
    }

    public void setPageSize(int pageSize)
    {
        this.pageSize = pageSize;
    }

    public int getTotalPage()
    {
        return totalPage;
    }

    public boolean isFirstPage()
    {
        return firstPage;
    }

    public boolean isLastPage()
    {
        return lastPage;
    }

    public int getBeginPage()
    {
        return beginPage;
    }

    public int getEndPage()
    {
        return endPage;
    }
}

业务处理代码

 //获取页码
 String curPage = request.getParameter("curPage");

 //创建一个pageBean对象
 PageBean pageBean = new PageBean();
 //通过getNum()方法得到总记录条数
 rowCount = bookDAO.getNum();

 //把相关参数存放到pageBean对象中
 pageBean.setRowCount(rowCount);    
 pageBean.setCurrentPage(curPage);

 //把页码传递到getBook()方法中,得到相应的分页数据信息
 bookList = bookDAO.getBook(pageBean.getCurrentPage());

 //把booklist中的数据存放到pageBean中
 pageBean.setPageList(booksList);

 //用于参数传递
 request.setAttribute("pagebean", pageBean);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值