分页对象
来源:互联网 发布:兼职数据录入招聘 编辑:程序博客网 时间:2024/06/05 21:52
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 此类用作对页面翻页时分页进行控制
* 在本类中特别注意pageSize这个属性
* 因为查询的结果为了统一方便
* 有时候采取列表显示,有些时候则采取树型展示
* 所以当用到树型展示的时候,则不需要分页
* 为此约定:当pageSize的值为-1的时候,说明采取属性展示,不进行分页
*/
public class PageController {
//总行数
private int totalRowsAmount;
//每页行数,默认为15
private int pageSize = 15;
//总页数
private int totalPages;
//当前页码,默认为1
private int currentPage = 1;
//上一页
private int previousPage;
//下一页
private int nextPage;
//是否有上一页
private boolean hasPrevious;
//是否有下一页
private boolean hasNext;
//当前页起始行
private int pageStartRow;
//当前页结束行
private int pageEndRow;
//查询结果数据
private List data;
//查询记录的起始位置
private int firstResultNum;
//查询记录的结束位置
private int maxResultNum;
//记录排序的字段和顺序
private Map orderMap;
public PageController(){}
//构造方法
public PageController(int totalRowsAmount , int currentPage , int pageSize){
if(pageSize==-1){
this.totalRowsAmount = totalRowsAmount;
this.currentPage = 1;
this.hasNext = false;
this.hasPrevious = false;
}else{
this.pageSize = pageSize;
setPageController(totalRowsAmount,currentPage);
setFirstAndMaxNum(currentPage,pageSize);
}
}
// 构造方法
public PageController(int currentPage , int pageSize){
setFirstAndMaxNum(currentPage , pageSize);
}
/**
* 通过传进来的总行数和当前页码,设置其他参数
* @param totalRowsAmount 总行数
* @param currentPage 当前页码
*/
private void setPageController(int totalRowsAmount , int currentPage){
setTotalRowsAmount(totalRowsAmount);
setCurrentPage(currentPage);
}
/**
* 通过传进来的总行数rows
* 将totalRowsAmount属性赋值
* 并且通过计算将总页数totalPages算出并赋值
* @param rows 总行数
*/
private void setTotalRowsAmount(int rows){
if(rows<0)
this.totalRowsAmount = 0;
else
this.totalRowsAmount = rows;
//得到总页数
if(this.totalRowsAmount%this.pageSize==0)
this.totalPages = this.totalRowsAmount/this.pageSize;
else
this.totalPages = this.totalRowsAmount/this.pageSize + 1;
}
/**
* 通过传进来的当前页码
* 1,将currentPage属性赋值
* 2,计算出上一页的页码和下一页的页码,并给属性赋值
* 3,通过比较,得知是否还有上一页和下一页
* 4,给当前起始行和当天结束行赋值
* @param currPage 当前页码
*/
private void setCurrentPage(int currPage){
//给当前页码赋值
if(currPage<=0){
this.currentPage = 1;
}else if(currPage>this.totalPages){
this.currentPage = this.totalPages;
}else{
this.currentPage = currPage;
}
//判断是否还有上一页和下一页
if(this.currentPage<this.totalPages){
this.hasNext = true;
}else{
this.hasNext = false;
}
if(this.currentPage>1){
this.hasPrevious = true;
}else{
this.hasPrevious = false;
}
//得到上一页和下一页的值
this.nextPage = this.currentPage + 1;
this.previousPage = this.currentPage - 1;
this.pageStartRow = (this.currentPage-1)*this.pageSize + 1;
//记录的索引从0开始
this.pageStartRow = this.pageStartRow - 1;
this.pageEndRow = this.pageStartRow + this.pageSize;
}
/**
* 根据当前页的大小和页面大小
* 计算出查询的其实位置和结束位置
* @param currPage 当前页
* @param pageSize 页面大小
*/
private void setFirstAndMaxNum(int currPage , int pageSize){
this.currentPage = currPage;
this.pageSize = pageSize;
this.firstResultNum = (currPage * pageSize) - pageSize;
this.maxResultNum = currPage * pageSize;
}
public List getData() {
return data;
}
public void setData(List data) {
this.data = data;
}
public int getFirstResultNum() {
if(pageSize == -1)
return 0;
else
return firstResultNum;
}
public int getMaxResultNum() {
if(pageSize == -1)
return 2000;
else
return pageSize;
}
public int getCurrentPage() {
return currentPage;
}
public boolean isHasNext() {
return hasNext;
}
public boolean isHasPrevious() {
return hasPrevious;
}
public int getNextPage() {
return nextPage;
}
public int getPageEndRow() {
return pageEndRow;
}
public int getPageSize() {
return pageSize;
}
public int getPageStartRow() {
return pageStartRow;
}
public int getPreviousPage() {
return previousPage;
}
public int getTotalPages() {
return totalPages;
}
public int getTotalRowsAmount() {
return totalRowsAmount;
}
public void setOrderMap(Map orderMap) {
this.orderMap = orderMap;
}
public Map getOrderMap() {
return orderMap;
}
public String getOrderString(){
if(orderMap==null)
return null;
StringBuffer result = new StringBuffer("");
Set keys = orderMap.keySet();
Iterator it = keys.iterator();
while(it.hasNext()){
String orderColumn = (String)it.next();
String orderType = (String)orderMap.get(orderColumn);
result.append(orderColumn).append(" ").append(orderType).append(" ");
if(it.hasNext())
result.append(",");
}
return result.toString().equals("")?null:result.toString();
}
public void setFirstResultNum(int firstResultNum) {
this.firstResultNum = firstResultNum;
}
public void setMaxResultNum(int maxResultNum) {
this.maxResultNum = maxResultNum;
}
}
- 分页对象
- 分页对象
- 分页对象
- hibernate对象查询分页
- List转分页对象
- js 分页 对象
- 分页对象PageList
- 分页对象Page
- Java 分页对象
- HQL分页显示对象
- Oracle分页工具类+分页对象JavaBean
- 一个分页对象比较简单
- 利用PagedDataSource 对象进行分页
- PagedDataSource对象实现DataList分页
- js面向对象分页器
- mybatis 分页-- 传入page对象
- 分页查询SQL&&Page对象
- 使用对象进行分页显示
- javascript 字符串常用操作(replaceAll,trim)
- PHP+MYSQL乱码问题解决方法三步走
- 验证程序执行时间代码
- NameNode中数据节点的保存(2)——NetworkTopology
- windows DIB位图的4字节对齐
- 分页对象
- svn externals使用
- QT QGraphicsView
- 安装SQL Server 2000出现“以前进行的程序安装创建了挂起的文件操作”的解决办法
- Oracle 11g R2令人赞赏的五大新特性
- 昆山到苏州公交乘坐终极攻略-实践归来
- 虛擬機 centos4.8 oracle9i9204 安裝很順利
- Android--后台处理--AsyncTask类
- Jtag、Jlink与Ulink