?? jdbcpage.java
字號:
/*
* Copyright (c) 2005 Your Corporation. All Rights Reserved.
*/
package net.jetmaven;
import com.sun.rowset.CachedRowSetImpl;
import javax.sql.rowset.CachedRowSet;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* Jdbc分頁信息,需要Jdk 1.5的支持
*
*/
public class JdbcPage implements Page
{
private CachedRowSet elements;
private int pageSize;
private int pageNumber;
private int totalElements = 0;
/**
* 構(gòu)建JdbcPage對象,完成JDBC的ResultSet分頁處理
*
* @param rs ResultSet對象,ResultSet必須是可滾動的數(shù)據(jù)集,可以通過以下的Statement執(zhí)行查詢。
* Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
* @param pageNumber 當(dāng)前頁編碼,從1開始,如果傳的值為Integer.MAX_VALUE表示獲取最后一頁。
* 如果你不知道最后一頁編碼,傳Integer.MAX_VALUE即可。如果當(dāng)前頁超過總頁數(shù),也表示最后一頁。
* 這兩種情況將重新更改當(dāng)前頁的頁碼,為最后一頁編碼。
* @param pageSize 每一頁顯示的條目數(shù)
*/
public JdbcPage(ResultSet rs, int pageNumber, int pageSize)
{
this.pageNumber = pageNumber;
this.pageSize = pageSize;
try
{
//get the total elements number
rs.last();
totalElements = rs.getRow();
if (this.pageNumber == Integer.MAX_VALUE || this.pageNumber > getLastPageNumber())
{
this.pageNumber = getLastPageNumber();
}
elements = new CachedRowSetImpl();
elements.setMaxRows(this.pageSize);
elements.setPageSize(this.pageSize);
elements.populate(rs, (this.pageNumber - 1) * this.pageSize);
} catch (SQLException e)
{
throw new RuntimeException(e);
}
}
public boolean isFirstPage()
{
return getThisPageNumber() == 1;
}
public boolean isLastPage()
{
return getThisPageNumber() >= getLastPageNumber();
}
public boolean hasNextPage()
{
return getLastPageNumber() > getThisPageNumber();
}
public boolean hasPreviousPage()
{
return getThisPageNumber() > 1;
}
public int getLastPageNumber()
{
return totalElements % this.pageSize == 0 ? totalElements / this.pageSize : totalElements / this.pageSize + 1;
}
/**
* 返回RowSet類型數(shù)據(jù)
*
* @return RowSet數(shù)據(jù)源
*/
public Object getThisPageElements()
{
return elements;
}
public int getTotalNumberOfElements()
{
return totalElements;
}
public int getThisPageFirstElementNumber()
{
return (getThisPageNumber() - 1) * getPageSize() + 1;
}
public int getThisPageLastElementNumber()
{
int fullPage = getThisPageFirstElementNumber() + getPageSize() - 1;
return getTotalNumberOfElements() < fullPage ? getTotalNumberOfElements() : fullPage;
}
public int getNextPageNumber()
{
return getThisPageNumber() + 1;
}
public int getPreviousPageNumber()
{
return getThisPageNumber() - 1;
}
public int getPageSize()
{
return pageSize;
}
public int getThisPageNumber()
{
return pageNumber;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -