TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
package cn.edu.bit.Object;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
*用于分页的类
*/
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 e){
e.printStackTrace();
}
try{
rs.beforeFirst(); //将数据库游标指向结果集的最前
}catch(SQLException e){
e.printStackTrace();
}
}
public void setPageSize(int pageSize) { //设置分页的大小
if(pageSize >= 0){
this.pageSize = pageSize;
}else{
this.pageSize = 1;
}
}
public void gotoPage(int page){ //转到指定页
switch(page){
case -1:
this.setCurrentPage(1);//如果转向首页,则将当前页置为第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) { //设置当前页
if(page <= 0) //当前号位0或者负数时,则当前页为第1页
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) //如果页数为0,则返回就是所有的记录数
return this.getTotalRows();
if(this.getTotalRows() == 0) //如果所有的记录数位0,则返回0
return 0;
if(this.getCurrentPage() != this.getTotalPages()) //如果当前页序不等于总页数
return this.getPageSize(); //返回每页的显示数
return this.getTotalRows()-(this.getTotalPages()-1)*this.getPageSize();
}
public void setTotalPages(int totalPages) { //设置总页数
if(this.getTotalRows() == 0){
this.totalPages = 0;
}else if(this.getPageSize() == 0){
this.totalPages = 1;
}else{
if(this.getTotalRows()%this.getPageSize() != 0) //如果所有记录数除每页显示数的余数为0,
this.totalPages = this.getTotalRows()/this.getPageSize()+1;
else //如果所有记录数除每页的显示数为0
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());
}
public static int getCurrentPage() {
return currentPage;
}
public int getPageSize() {
return pageSize;
}
public int getRowsCount() {
return rowsCount;
}
public void setRowsCount(int rowsCount) {
this.rowsCount = rowsCount;
}
public int getTotalPages() {
return totalPages;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
}
|
|