只为成功找方法,不为失败找理由。

博客园 首页 新随笔 联系 订阅 管理

直接把代码贴出来以后方便看。

page = new Page<MissionlistVo>((pageNum-1)*pageSize,pageSize,list);

调用 传入参数:pageNum  pageSize  list

/**
 * 分页对象. 包含当前页数据及分页信息如总记录数.
 *
 */
public class Page<T> implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 7066551090434228986L;

    private static int DEFAULT_PAGE_SIZE = 10;

    private int pageSize = DEFAULT_PAGE_SIZE; // 每页的记录数

    private long start = 0L; // 当前页第一条数据在List中的位置,从0开始

    private List<T> result; // 当前页中存放的记录,类型一般为List

    private long totalCount; // 总记录数
    
    private String innerHtml; //分页

    /**
     * 构造方法,只构造空页.
     */
    public Page() {
        this(0, 0, DEFAULT_PAGE_SIZE, new ArrayList<T>());
    }

    /**
     * 默认构造方法.
     *
     * @param start     本页数据在数据库中的起始位置
     * @param totalSize 数据库中总记录条数
     * @param pageSize  本页容量
     * @param result      本页包含的数据
     */
    public Page(long start, long totalSize, int pageSize, List<T> result) {
        this.pageSize = pageSize;
        this.start = start;
        this.totalCount = totalSize;
        this.result = result;
        this.toHtmlString();
    }
    
    /**
     * 构造方法
     * @param start 本页数据在数据库中的起始位置
     * @param pageSize 本页容量
     * @param total 所有数据
     */
    public Page(long start, int pageSize, List<T> total) {
        this.pageSize = pageSize;
        this.start = start;
        this.totalCount = total.size();
        this.result = new ArrayList<T>();
        for(int i=(int)start; i<total.size() && i<start+pageSize; i++) {
            this.result.add(total.get(i));
        }
        this.toHtmlString();
    }

    /**
     * 取总记录数.
     */
    public long getTotalCount() {
        return this.totalCount;
    }

    /**
     * 取总页数.
     */
    public long getTotalPageCount() {
        if(pageSize == 0)
            return 0;
        if (totalCount % pageSize == 0)
            return totalCount / pageSize;
        else
            return totalCount / pageSize + 1;
    }

    /**
     * 取每页数据容量.
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * 取当前页中的记录.
     */
    public List<T> getResult() {
        return result;
    }
    
    /**
     * 设置记录.
     */
    public void setResult(List<T> result) {
        this.result = result;
    }

    /**
     * 取该页当前页码,页码从1开始.
     */
    public long getCurrentPageNo() {
        if(pageSize == 0)
            return 0;
        return start / pageSize + 1;
    }

    /**
     * 该页是否有下一页.
     */
    public boolean hasNextPage() {
        return this.getCurrentPageNo() < this.getTotalPageCount() ;
    }

    /**
     * 该页是否有上一页.
     */
    public boolean hasPreviousPage() {
        return this.getCurrentPageNo() > 1;
    }

    /**
     * 获取任一页第一条数据在数据集的位置.
     *
     * @see #getStartOfPage(int,int)
     */
    public long getStartOfPage(int pageNo) {
        return getStartOfPage(pageNo, this.pageSize);
    }

    /**
     * 获取任一页第一条数据在数据集的位置.
     *
     * @param pageNo   从1开始的页号
     * @param pageSize 每页记录条数
     * @return 该页第一条数据
     */
    public static long getStartOfPage(int pageNo, int pageSize) {
        return (pageNo - 1) * pageSize;
    }
    
    
    
    public void toHtmlString(){
        if (this.getTotalPageCount() < 2) {
            this.innerHtml = "";
        }else{
            StringBuffer htmlStr = new StringBuffer(1024);
            htmlStr.append("&nbsp;共").append(this.getTotalCount());
            htmlStr.append("条记录,每页").append(this.pageSize);
            htmlStr.append("条,共").append(this.getTotalPageCount());
            htmlStr.append("页,当前第").append(getCurrentPageNo()).append("页&nbsp;");
            
            htmlStr.append("<a ");
            if(this.getCurrentPageNo() > 1){
                htmlStr.append("herf='#' onclick='javascript:getPage(1);'");
            }
            htmlStr.append(">首页</a>&nbsp;");
            
            htmlStr.append("<a ");
            if(this.hasPreviousPage()){
                htmlStr.append("herf='#' onclick='javascript:getPage(").append(this.getCurrentPageNo()-1).append(");'");
            }
            htmlStr.append(">上一页</a>&nbsp;");
            
            htmlStr.append("<a ");
            if(this.hasNextPage()){
                htmlStr.append("herf='#' onclick='javascript:getPage(").append(this.getCurrentPageNo()+1).append(");'");
            }
            htmlStr.append(">下一页</a>&nbsp;");
            
            htmlStr.append("<a ");
            if(this.getCurrentPageNo() < this.getTotalPageCount()){
                htmlStr.append("herf='#' onclick='javascript:getPage(").append(this.getTotalPageCount()).append(");'");
            }
            htmlStr.append(">尾页</a>&nbsp;");
            
            
            this.innerHtml = htmlStr.toString();
            htmlStr = null;
        }
        
    }

    public String getInnerHtml() {
        return innerHtml;
    }

    public void setInnerHtml(String innerHtml) {
        this.innerHtml = innerHtml;
    }
最重要的是只需要new  一个page  这样把list传过去。  把pagesize  ,pagenum传过去然后就可以直接得到分页结果了     
page = new Page<MissionlistVo>((pageNum-1)*pageSize,pageSize,list);
page.innerHTML
&nbsp;共64条记录,每页10条,共7页,当前第1页&nbsp;<a >首页</a>&nbsp;<a >上一页</a>&nbsp;<a herf='#' onclick='javascript:getPage(2);'>下一页</a>&nbsp;<a herf='#' onclick='javascript:getPage(7);'>尾页</a>&nbsp;

 

posted on 2015-05-14 16:01  诗意的活着  阅读(357)  评论(0编辑  收藏  举报