oracle一个比较完整的分页工具类Page
来源:互联网 发布:jquery 数组转换json 编辑:程序博客网 时间:2024/05/21 11:35
package com.thams.bianYan;
import java.io.Serializable;
import java.util.ArrayList;
public class Page implements Serializable{
private static final long serialVersionUID = 1L;
private static final int defaultItemCountPerPage = 10;//page默认的记录的个数设置为10
private int totalRecordCount;//符合该条件的总记录数目
private int itemCountPerPage;//每页显示的记录数目
private int pageNumber;//该页的页码
private int beginRowNum;//起始记录的行码
private int endRowNum;//终止记录的行码
private int lastPageNumber;//最后一页的页码
private int itemCountInPage;//在本页中的记录数目
private boolean hasPrevious;//是否有上一页
private boolean hasNext;//是否有上一页
private ArrayList itemsList;//该页中对象内容
public Page(int totalRecordCount, int itemCountPerPage, int pageNumber) {
//处理构造函数的记录总数参数
if(totalRecordCount<0){
totalRecordCount = 0;
}
//处理构造函数的每一页记录个数的参数
if(itemCountPerPage<=0){
itemCountPerPage = defaultItemCountPerPage;
}
//处理构造函数的当前页码参数
if(pageNumber<0){
pageNumber = 0;
}
if(totalRecordCount==0){
pageNumber = 0;
}else{
if(pageNumber==0){
pageNumber = 1;
}else{
int count = totalRecordCount/itemCountPerPage+(totalRecordCount%itemCountPerPage==0?0:1);
pageNumber = pageNumber>count?count:pageNumber;
}
}
//设置Page的各个成员变量
setTotalRecordCount(totalRecordCount);
setItemCountPerPage(itemCountPerPage);
setPageNumber(pageNumber);
if(totalRecordCount==0){
setBeginRowNum(0);
setEndRowNum(0);
setLastPageNumber(0);
setItemCountInPage(0);
setHasPrevious(false);
setHasNext(false);
}else{
setRowNums(totalRecordCount, itemCountPerPage, pageNumber);
setLastPageNumber(totalRecordCount, itemCountPerPage);
setItemCountInPage(totalRecordCount, itemCountPerPage, pageNumber);
setHasNext();
setHasPrevious();
}
}
/**
* 设置和得到总共含有的记录条数
*/
private void setTotalRecordCount(int totalRecordCount) {
this.totalRecordCount = totalRecordCount;
}
public int getTotalRecordCount() {
return this.totalRecordCount;
}
/**
* 设置和得到每一页有多少个元素
*/
public int getItemCountPerPage() {
return itemCountPerPage;
}
private void setItemCountPerPage(int itemCountPerPage) {
this.itemCountPerPage = itemCountPerPage;
}
/**
* 设置和得到当前页码数
*/
public int getPageNumber() {
return this.pageNumber;
}
private void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
/**
* 设置和得到该页显示的数据的开始元素的rownum
*/
private void setBeginRowNum(int beginRowNum) {
this.beginRowNum = beginRowNum;
}
public int getBeginRowNum() {
return beginRowNum;
}
/**
* 设置和得到该页显示的数据的结束元素的rownum
*/
private void setEndRowNum(int endRowNum) {
this.endRowNum = endRowNum;
}
public int getEndRowNum() {
return endRowNum;
}
/**
* 设置和得到最后一页的页码数
*/
public int getLastPageNumber() {
return lastPageNumber;
}
private void setLastPageNumber(int lastPageNumber) {
this.lastPageNumber = lastPageNumber;
}
private void setLastPageNumber(int totalRecordCount, int itemCountPerPage) {
if (totalRecordCount % itemCountPerPage == 0) {
setLastPageNumber(totalRecordCount / itemCountPerPage);
} else {
setLastPageNumber(totalRecordCount / itemCountPerPage + 1);
}
}
/**
* 设置和得到当前页面中总共有多少个元素
*/
private void setItemCountInPage(int itemCountInPage) {
this.itemCountInPage = itemCountInPage;
}
public int getItemCountInPage() {
return this.itemCountInPage;
}
private void setItemCountInPage(int totalRecordCount,int itemCountPerPage, int pageNumber) {
int temp = pageNumber * itemCountPerPage;
if (temp <= totalRecordCount) {
setItemCountInPage(itemCountPerPage);
} else {
setItemCountInPage(totalRecordCount - ((pageNumber - 1) * itemCountPerPage));
//此处也可以用取模运算得到
//setItemCountInPage(totalRecordCount%itemCountPerPage);
}
}
/**
* 设置和得到本页是否还有上一页
*/
public boolean isHasPrevious() {
return hasPrevious;
}
private void setHasPrevious(boolean hasPrevious) {
this.hasPrevious = hasPrevious;
}
private void setHasPrevious() {
if (pageNumber == 1) {
setHasPrevious(false);
} else {
setHasPrevious(true);
}
}
/**
* 设置和得到本页是否还有下一页
*/
public boolean isHasNext() {
return hasNext;
}
private void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}
private void setHasNext() {
if (pageNumber < lastPageNumber) {
setHasNext(true);
} else {
setHasNext(false);
}
}
/**
* 设置和得到该页面中所含有的数据列表
*/
public ArrayList getItemsList() {
return itemsList;
}
public void setItemsList(ArrayList itemsList) {
this.itemsList = itemsList;
}
/**
*设置该页面的元素的起始顺序(记录总数不为0是调用该方法)
*/
private void setRowNums(int totalRecordCount,int itemCountPerPage, int pageNumber) {
setBeginRowNum((pageNumber - 1) * itemCountPerPage + 1);
if(pageNumber * itemCountPerPage>totalRecordCount){
setEndRowNum(totalRecordCount);
}else{
setEndRowNum(pageNumber * itemCountPerPage);
}
}
}
注意:
1.该工具类适宜在oracle下使用rownum来进行分页查询
2.该工具类属性的set方法已经被设置为private私有化,这些属性只有在构造函数中才能够被维护,因在外部应用程序使用时各个属性是作为控制标识的,所以取消外部程序对属性的维护权利
- oracle一个比较完整的分页工具类Page
- page分页工具类
- 一个完整的分页类
- 封装的一个完整的分页类
- 一个比较完整的CString类
- oracle 分页查询的方法,以及page实体类
- page分页工具类 数据库端
- oracle之完整的动态分页
- 分享一个完整的Mybatis分页解决方案
- 分享一个完整的Mybatis分页解决方案
- 分享一个完整的Mybatis分页解决方案
- 一个完整的Mybatis分页解决方案
- 分享一个完整的Mybatis分页解决方案
- 分享一个完整的Mybatis分页解决方案
- 分享一个完整的Mybatis分页解决方案
- 一个封装比较完整的FTP类——clsFTP
- 一个封装比较完整的FTP类——clsFTP
- 一个封装比较完整的FTP类——clsFTP
- 按时间段统计,不连续的日期要补上
- 如何评价软件的质量
- 使用DDD+GDB开发ARM Linux程序
- 众多技术我该学那样?(转)
- 美化博客样式
- oracle一个比较完整的分页工具类Page
- 几种常见网页自动跳转方法
- 拷贝构造函数
- Css 学习笔记第三天
- scratchbox:编译时出现mmap: Permission denied
- IT人 不要一辈子靠技术生存(转)
- Effective C# 原则16:垃圾最小化
- asp.net 简单的三层构架例子
- Effective C# 原则17:装箱和拆箱的最小化