/*
* 创建日期 2005-8-22
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package cn.edu.bit.Object;
import java.sql.*;
/**
* @author ligang
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Pageable {
private int pageSize;
// 结果集的总行数
private int totalRows;
// 结果集的总页数
private int totalPages;
// 当前页
private static int currentPage;
// 数据库游标指向的行
private int rowsCount;
// 构造函数
public Pageable(ResultSet rs) {
try {
// 将数据库游标指向结果集的最后
rs.last();
} catch (SQLException e) {
e.printStackTrace();
}
try {
// 得到结果集的总行数
this.setTotalRows(rs.getRow());
} catch (SQLException e1) {
e1.printStackTrace();
}
try {
// 将数据库游标指向结果集的最前
rs.beforeFirst();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
/**
设置分页大小
*/
public void setPageSize(int pageSize) {
if (pageSize >= 0) {
this.pageSize = pageSize;
} else {
this.pageSize = 1;
}
this.setTotalPages();
}
/**
转到指定页
*/
public void gotoPage(int page) {
switch (page) {
case -1:
// 如果转向首页,则将当前页置为第1页
this.setCurrentPage(1);
break;
case -2:
// 如果转向上一页,则将当前页上移一页
int t = this.getCurrentPage();
this.setCurrentPage(t - 1);
break;
case -3:
// 如果转向下一页,则将当前页下移一页
int n = this.getCurrentPage();
this.setCurrentPage(n + 1);
break;
case -4:
// 如果转向尾页,则将当前页转到与总页数相符的页
this.setCurrentPage(this.getTotalPages());
break;
default:
// 如果转向其他页,则将当前页置为相应的页数
this.setCurrentPage(page);
}
}
/**
* 设置当前页
*/
public void setCurrentPage(int page) {
// 如果页号为0或者负数时,则当前页为第1页
if (page <= 0)
this.currentPage = 1;
// 如果页号大于实际总页数时,当前页为总页数
if (page > this.getTotalPages())
this.currentPage = this.getTotalPages();
// 在其他情况下,当前页置为给定的页号
else
this.currentPage = page;
// 设置数据库游标指向位置
this.setRowsCount((this.currentPage -1) * this.getPageSize() + 1);
System.out.println(this.getRowsCount());
}
/**
返回当前页的记录条数
*/
public int getCurrentPageRowsCount() {
if (this.getPageSize() == 0)
return this.getTotalRows();
if (this.getTotalRows() == 0)
return 0;
if (this.getCurrentPage() != this.getTotalPages())
return this.getPageSize();
return this.getTotalRows() - (this.getTotalPages() - 1)
* this.getPageSize();
}
/**
返回分页大小
*/
public int getPageSize() {
return this.pageSize;
}
/**
返回总记录行数
*/
public int getTotalRows() {
return totalRows;
}
/**
设置总记录行数
*/
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
/**
返回游标指向行的位置
*/
public int getRowsCount() {
return rowsCount;
}
/**
设置游标指向行的位置
*/
public void setRowsCount(int rowsCount) {
this.rowsCount = rowsCount;
}
/**
返回当前页号
*/
public int getCurrentPage() {
return currentPage;
}
/**
返回总页数
*/
public int getTotalPages() {
return this.totalPages;
}
/**
设置总页数
*/
public void setTotalPages() {
if (this.getTotalRows() == 0) {
this.totalPages = 0;
} else if (this.getPageSize() == 0) {
this.totalPages = 1;
} else {
if (this.getTotalRows() % this.getPageSize() != 0)
this.totalPages = this.getTotalRows() / this.getPageSize() + 1;
else
this.totalPages = this.getTotalRows() / this.getPageSize();
}
}
/**
转到当前页的第一条记录
*/
public void pageFirst() throws java.sql.SQLException {
this.setRowsCount((this.getCurrentPage() - 1) * this.getPageSize() + 1);
}
/**
转到当前页的最后一条记录
*/
public void pageLast() throws java.sql.SQLException {
this.setRowsCount((this.getCurrentPage() - 1) * this.getPageSize()
+ this.getCurrentPageRowsCount());
}
}
评论0
最新资源