java 分页工具类

//13年写的,今天(17)拷贝到博客园

package com.sicdt.sicsign.web.utils;

import java.io.Serializable;
import java.util.List;

/**
 * @author shizhenwei
 *
 * @param <T>用于向前台返还List所用
 */
public class PageInfo<T> implements Serializable {
    private static final long serialVersionUID = 1L;
     //每页显示的记录数
    private Integer pageSize;
     //当前页码数
    private Integer pageNum;
     //总记录数
    private Integer rowCount;
     //总页码数
    private Integer pageCount;
    //查询的时候从多少记录开始
    private Integer rowStart;
     //每页显示多少页码
    private Integer everyPageTabsCount;
     //每页显示的开始页码数
    private Integer everyPageStart;
     //每页显示的结束页码数
    private Integer everyPageEnd;
     //是否有上一页
    private boolean hasPrevious = false;
     //首页
    private Integer firstPageNum;
     //上一页
    private Integer priviousPageNum;
     //是否有下一页
    private boolean hasNext = false;
     //下一页
    private Integer nextPageNum;
     //尾页
    private Integer endPageNum;
     //存放本次分页查询出来的数据
    private List<T> list;

     /**
      * 通过构造器计算出其他属性的值
     * @param pageSize
      * @param pageNum
      * @param rowCount
      */
    public PageInfo(Integer pageNum,Integer pageSize,Integer rowCount,Integer everyPageTabsCount) {
         //每页显示的记录数
        this.pageSize = pageSize == null ? 10 : pageSize;
         //当前页码数
        this.pageNum = pageNum == null ? 1 : pageNum;
         //总记录数
        this.rowCount = rowCount == null ? 0 : rowCount;
        //每页显示多少页码 默认10,可以set
        this.everyPageTabsCount = everyPageTabsCount == null ? 10 : everyPageTabsCount;
         //总页码数
        this.pageCount = (int) Math.ceil(this.rowCount * 1.0 / this.pageSize);
         //判断当前页码数是否大于总页码数
        if (this.pageNum > this.pageCount && this.pageCount >= 1) {
           this.pageNum = this.pageCount;
        }
        //查询的时候从多少记录开始
        this.rowStart = (this.pageNum - 1) * this.pageSize;
        //每页显示的开始页码数
        this.everyPageStart = (this.pageNum - this.everyPageTabsCount / 2) > 0 ? (this.pageNum - this.everyPageTabsCount / 2) : 1;

        /***** 无论从第几页开始都会以固定的页数进行显示,当总页数小于固定页数,将全部显示总页数****/
         int cenNum = (int) Math.ceil((this.everyPageTabsCount / 2.0));
         if(this.pageCount>=this.everyPageTabsCount && this.pageNum<=(this.everyPageTabsCount / 2)){
             this.everyPageEnd = this.everyPageTabsCount;
         }else if(this.pageCount<=this.everyPageTabsCount){
             this.everyPageEnd = this.pageCount;
         }else{
             //每页显示的结束页码数
            this.everyPageEnd = (this.pageNum + cenNum - 1) > this.pageCount ? this.pageCount : (this.pageNum + cenNum - 1);
         }
         if(this.pageCount>=this.everyPageTabsCount && this.pageNum>(this.pageCount-(cenNum - 1))){
             this.everyPageStart=this.pageCount-(this.everyPageTabsCount-1);
         }

        //是否有上一页
        if (this.pageNum > 1) {
             this.hasPrevious = true;
             this.firstPageNum = 1;
             this.priviousPageNum = this.pageNum - 1;
         }
         //是否有下一页
        if (this.pageNum < this.pageCount) {
             this.hasNext = true;
             this.nextPageNum = this.pageNum + 1;
             this.endPageNum = this.pageCount;
        }
    }

    public Integer getPageSize() {
        return pageSize;
    }

    public Integer getPageNum() {
        return pageNum;
    }

    public Integer getRowCount() {
        return rowCount;
    }

    public Integer getPageCount() {
        return pageCount;
    }

    public Integer getRowStart() {
        return rowStart;
    }

    public Integer getEveryPageStart() {
        return everyPageStart;
    }

    public Integer getEveryPageEnd() {
        return everyPageEnd;
    }

    public boolean isHasPrevious() {
        return hasPrevious;
    }

    public Integer getFirstPageNum() {
        return firstPageNum;
    }

    public Integer getPriviousPageNum() {
        return priviousPageNum;
    }

    public boolean isHasNext() {
        return hasNext;
    }

    public Integer getNextPageNum() {
        return nextPageNum;
    }

    public Integer getEndPageNum() {
        return endPageNum;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public Integer getEveryPageTabsCount() {
        return everyPageTabsCount;
    }

    public void setEveryPageTabsCount(Integer everyPageTabsCount) {
        this.everyPageTabsCount = everyPageTabsCount;
    }
}

原文地址:https://www.cnblogs.com/zwcry/p/8479002.html

时间: 2024-08-29 11:25:54

java 分页工具类的相关文章

分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]https://www.cnblogs.com/m-yb/p/9986309.html分页功能的实现可以使用各种插件, 笔者今日闲来无事, 写了 分页工具类 前后台代码 Java JavaScript 的 实现及思路梳理.供大家参考.分页功能的需求一般有: 当前页/每页条数/总页数/总记录数/起始记录数/数

Java 分页工具

[背景] 最近学习Spring MVC,涉及到分页显示的问题,准备自己整理一个分页工具.由于以前使用Strus框架使用 NewPandaKing 的一个PageBean和Page方法,耦合性比较高,于是优化一下. [优点] 耦合低,使用方便. [缺点] 由于耦合低,不查数据库,所以每次使用List的sublist方法,效率降低. 代码如下: 分页工具类:PageUtil.java /** * Java 分页工具类 */ package com.util; import java.util.Has

Java Web的分页工具类

最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: PageUtil.java 1 package util; 2 3 import java.util.Map; 4 5 /** 6 * 分页工具类 7 * @author lyh 8 * 9 */ 10 public class PageUtil { 11 private int total; //总数

项目经验分享——Java常用工具类集合 转

http://blog.csdn.net/xyw591238/article/details/51678525 写在前面 本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类——仅仅获得连接对象 ConnDB.java [java] package com.util; import java.sql.Connection; import java.sql.DriverM

Java常用工具类集合

数据库连接工具类 仅仅获得连接对象 ConnDB.java package com.util; import java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = null; private static final String DRIVER_NAME = "com.mysql

[转]Java常用工具类集合

转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.util; import java.sql.Connection; import java.sql.DriverManager; /** * 数据库连接工具类——仅仅获得连接对象 * */ public class ConnDB { private static Connection conn = nu

个人常用工具类:分页工具类

import java.io.Serializable; import java.util.List; // 分页工具类 public class PageBean implements Serializable { private static final long serialVersionUID = -8741766802354222579L; private int pageSize = 5; // 每页显示多少条记录 private int currentPage = 1; //当前第

Java 数组工具类排序,最大值最小值等

public class ArrayUtils{ /** * 返回数组最大值 * * @param a * @return */ public static int max(int[] a){ // 返回数组最大值 int x; int aa[]=new int[a.length]; System.arraycopy(a,0,aa,0,a.length); x=aa[0]; for(int i=1;i<aa.length;i++){ if(aa[i]>x){ x=aa[i]; } } retu

java流工具类使用很方便

package com.auto.generate.utils ; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * File Name: StreamTool.jav