• 分页工具类


    写的一个分页工具类,如果有问题的话,请指正,谢谢

    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 分页工具类
     * 
     * @author user
     * 
     */
    public class Pager {
    	private static final int DEFAULT_PAGESIZE = 10;// 默认分页的每页显示的条数
    	private static final int DEFAULT_PAGENUM = 5;// 默显示页码的数量
    	private int pagerIndex;// 当前的页码
    	private int pagerCount;// 总页码
    	private int pageSize;// 每页显示的条数
    	private int recordCount;// 总记录数
    	private int offsetNum;// 显示页码数量的偏移量
    	private int pageNum;// 显示页码的数量
    
    	public Pager() {
    	}
    
    	/**
    	 * 构造函数,初始化分页的信息,自动修正
    	 * 
    	 * @param pageIndex
    	 *            当前的页码
    	 * @param recordCount
    	 *            总记录数
    	 * @param pageSize
    	 *            分页每页显示的条数
    	 */
    	public Pager(int pageIndex, int recordCount, int pageSize) {
    		this.pagerIndex = pageIndex;
    		this.recordCount = recordCount;
    		this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize;
    		this.pagerCount = (this.recordCount - 1) / pageSize + 1;
    		if (this.pagerIndex < 1)
    			this.pagerIndex = 1;
    		if (this.pagerIndex > pagerCount)
    			this.pagerIndex = this.pagerCount;
    		this.setPageNum(Pager.DEFAULT_PAGENUM);
    	}
    
    	/**
    	 * 构造函数,初始化分页的信息,自动修正
    	 * 
    	 * @param pageIndex
    	 *            当前的页码
    	 * @param recordCount
    	 *            总记录数
    	 * @param pageSize
    	 *            分页每页显示的条数
    	 * @param pagerNum
    	 *            每页显示的条数
    	 */
    	public Pager(int pageIndex, int recordCount, int pageSize, int pagerNum) {
    		this(pageIndex, recordCount, pageSize);
    		this.setPageNum(pagerNum);
    	}
    
    	/**
    	 * 设置分页的信息,自动修正
    	 * 
    	 * @param pageIndex
    	 *            当前的页码
    	 * @param recordCount
    	 *            总记录数
    	 * @param pageSize
    	 *            分页每页显示的条数
    	 */
    	public void setPagerInfo(int pageIndex, int recordCount, int pageSize) {
    		this.pagerIndex = pageIndex;
    		this.recordCount = recordCount;
    		this.pageSize = pageSize < 1 ? Pager.DEFAULT_PAGESIZE : pageSize;
    		this.pagerCount = (this.recordCount - 1) / pageSize + 1;
    		if (this.pagerIndex < 1)
    			this.pagerIndex = 1;
    		if (this.pagerIndex > pagerCount)
    			this.pagerIndex = this.pagerCount;
    	}
    
    	/**
    	 * 得到上一页
    	 * 
    	 * @return
    	 */
    	public int getProvPageIndex() {
    		return (this.pagerIndex - 1) < 1 ? 1 : this.pagerIndex - 1;
    	}
    
    	/**
    	 * 得到下一页
    	 * 
    	 * @return
    	 */
    	public int getNextPageIndex() {
    		return (this.pagerIndex + 1) > this.pagerCount ? pagerCount : this.pagerIndex + 1;
    	}
    
    	public int getPagerIndex() {
    		return pagerIndex;
    	}
    
    	public int getPagerCount() {
    		return pagerCount;
    	}
    
    	public int getPageSize() {
    		return pageSize;
    	}
    
    	public int getRecordCount() {
    		return recordCount;
    	}
    
    	/**
    	 * 设置显示页码的数量
    	 * 
    	 * @param pageNum
    	 *            显示页码的数量
    	 */
    	private void setPageNum(int pageNum) {
    		pageNum = pageNum % 2 == 0 ? ++pageNum : pageNum;// 页数目录的数量只能为奇数
    		pageNum = pageNum < 1 ? Pager.DEFAULT_PAGENUM : pageNum;// 如果显示的页码数量小于1,则设置为默认值
    		pageNum = pageNum > this.pagerCount ? (this.pagerCount % 2 ==0&&this.pagerCount>2 ? this.pagerCount - 1 : this.pagerCount)
    				: pageNum;// 如果显示页码的数量大于总页数,则邓等于页码德总页数
    		this.offsetNum = (pageNum - 1) / 2;
    		this.pageNum = pageNum;
    	}
    
    	/**
    	 * 分页目录显示样式
    	 * 
    	 * @return
    	 */
    	public List<Integer> getShowPageStyle() {
    		List<Integer> list = new ArrayList<Integer>();
    		// 当分页的总数量小于等于显示分页的数量
    		if (this.pagerCount <= this.pageNum) {
    			for (int i = 1; i <= this.pagerCount; i++) {
    				list.add(i);
    			}
    			return list;
    		}
    		// 显示分页数量的偏移量大于当前的页码
    		if (this.offsetNum >= this.pagerIndex) {
    			for (int i = 1; i <= this.pageNum; i++) {
    				list.add(i);
    			}
    			return list;
    		}
    		// 当前的页码在最后几页且在偏移量范围之内
    		if (this.pagerIndex >= this.pagerCount - this.offsetNum) {
    			for (int i = pagerCount - this.pageNum + 1; i <= this.pagerCount; i++) {
    				list.add(i);
    			}
    			return list;
    		}
    		// 普通情况
    		for (int i = this.pagerIndex - offsetNum; i <= this.pagerIndex + this.offsetNum; i++) {
    			list.add(i);
    		}
    		return list;
    	}
    
    	public static void main(String[] args) {
    		Pager pager = new Pager(1, 100, 10);
    		List<Integer> list = pager.getShowPageStyle();
    		for (Integer integer : list) {
    			System.out.println(integer);
    			System.out.println("================");
    		}
    	}
    }
    
  • 相关阅读:
    【Nginx】ngx_event_core_module模块
    ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
    nyist oj 214 单调递增子序列(二) (动态规划经典)
    java 入门书籍(java7)
    ARCGIS将WGS84坐标投影到高斯平面
    【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码
    【springboot】【socket】spring boot整合socket,实现服务器端两种消息推送
    【linux】linux修改open file 大小
    【docker】docker限制日志文件大小的方法+查看日志文件的方法
    【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志
  • 原文地址:https://www.cnblogs.com/yxdz/p/7528595.html
Copyright © 2020-2023  润新知