page分页工具类 数据库端

/*
 * 文件名: Page.java
 * 
 * 创建日期: 2005-03-06
 *
 * Copyright(C) 2008, by FrancisJin.
 *
 * 原始作者: sunny 黄学斌
 *
 */
package com.feinno.scort.exp.util;


/**
 * 描述数据库分页信息的Java类
 * 
 * @author haungxuebin
 *
 * @version $Revision: 1.1 $
 *
 * @since 2012-10-11
 */
public class Page {

	/** 总共的页数 */
	private int totalPage;

	/** 总共有多少记录 */
	private long resultCount;

	/** 目前的页数 */
	private int page;

	/** 每页显示条目数 */
	private int pageSize;

	/** 要排序的字段 */
	private String orderBy;

	/** 按什么排序,只能是:asc||desc */
	private String order;


	/**
	 * 分页信息Java类的构造函数
	 * 
	 * @param resultCount
	 *            总记录数
	 * @param pageSize
	 *            每页显示条目数
	 */
	public Page(long resultCount, int pageSize) {

		if (resultCount > 0) {
			this.resultCount = resultCount;
		}
		if (pageSize > 0) {
			this.pageSize = pageSize;
		}
		if (resultCount > 0 && pageSize > 0) {
			this.totalPage = (int) ((resultCount + pageSize - 1) / pageSize);
		}
		this.page = 1;
	}


	/**
	 * 获得当前页的前一页,如果当前页是第一页,返回当前页。
	 * 
	 * @return 当前页的前一页
	 */
	public int getPreviousPage() {
		if (this.page - 1 <= 0) {
			return 1;
		}	else {
			return (this.page - 1);
		}
	}

	/**
	 * 获得当前页的下一页,如果当前页是最后一页,返回当前页。
	 * 
	 * @return 当前页的下一页
	 */
	public int getNextPage() {
		if (this.page + 1 >= totalPage) {
			return totalPage;
		}		else {
			return (this.page + 1);
		}
	}

	/**
	 * 分页查询的起始位置
	 * 
	 * @return 分页查询的起始位置
	 */
	public int getFirstItemPos() {
		int temp = (page - 1) * pageSize;
		if(temp<0)temp=0;
		return temp;
	}

	/**
	 * 需要从起始位置开始向后查询的总记录条数,由于分页原因,最后一页记录数不一定是每页显示的数目,可能比这小。
	 * 
	 * @return 需要从起始位置开始向后查询的总记录条数
	 */
	public long getMaxItemNum() {
		long maxItemNum = 0;
		if (resultCount <= pageSize) {
			maxItemNum = resultCount;
		}		else if ((resultCount - (page - 1) * pageSize) >= pageSize) {
			maxItemNum = pageSize;
		}		else {
			maxItemNum = (resultCount - (page - 1) * pageSize);
		}
		return maxItemNum;
	}
	
	/**
	 * 获取当前分页最后一条数据的序号
	 * @return
	 */
	public long getEndItemPos(){
		return this.getFirstItemPos()+this.getMaxItemNum();
	}
	public int getPage() {
		return page;
	}

	/**
	 * 设置当前页,如果设置的页数大于总页数,则当前页为最后一页,如果设置页数小于0,则当前页为1。
	 * 
	 * @param page
	 *            要设置的当前页
	 */
	public void setPage(int page) {
		if (page > totalPage) {
			this.page = totalPage;
		}		else if (page <= 0) {
			this.page = 1;
		}		else {
			this.page = page;
		}
	}

	public int getPageSize() {
		return pageSize;
	}


	/**
	 * 获得记录数
	 * 
	 * @return 总记录数
	 */
	public long getResultCount() {
		return resultCount;
	}

	/**
	 * 获得总页数
	 * 
	 * @return 总页数
	 */
	public int getTotalPage() {
		return totalPage;
	}

	/**
	 * 获得如何排序
	 * 
	 * @return 返回 asc或者desc。
	 */
	public String getOrder() {
		return order;
	}

	/**
	 * 设置如何排序
	 * 
	 * @param order
	 *            要设置的排序方式,asc或者desc。
	 */
	public void setOrder(String order) {
		this.order = order;
	}

	/**
	 * 获得要排序的字段
	 * 
	 * @return 返回排序字段。
	 */
	public String getOrderBy() {
		return orderBy;
	}

	/**
	 * 设置要排序的字段
	 * 
	 * @param orderBy
	 *            要设置的排序字段。
	 */
	public void setOrderBy(String orderBy) {
		this.orderBy = orderBy;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值