第1个回答 2010-03-31
package cjw.nic.news.utils;
/**
*
*/
public class Pager implements java.io.Serializable {
private static final long serialVersionUID = 7509626531677245756L;
private int totalRows;
private int pageSize;
private int currentPage;
private int totalPages;
private int startRow;
public Pager() {}
@Deprecated
public static int[] getRownum( int _currentPage, String pagerMethod, int _pageSize, int _totalRows) {
int[] arr = new int[2];
if(pagerMethod.equals("")){
arr[0] = (_currentPage-1)*_pageSize + 1;arr[1] = (_currentPage)*_pageSize;
}else if (pagerMethod.equals("first")) {
arr[0] = 1;arr[1] = _pageSize;
} else if (pagerMethod.equals("prev")) {
arr[0] = (_currentPage-2)*_pageSize + 1;arr[1] = (_currentPage-1)*20;
} else if (pagerMethod.equals("next")) {
arr[0] = (_currentPage)*_pageSize + 1;arr[1] = (_currentPage+1)*20;
} else if (pagerMethod.equals("last")) {
if(_totalRows > 0){
arr[0] = _totalRows - _pageSize;arr[1] = _totalRows;
} else {
arr[0] = (_currentPage)*_pageSize + 1;arr[1] = (_currentPage+1)*20;
}}
return arr;
}
/**
* pager
* @param _currentPage 当前页码
* @param _totalRows 总记录数
* @param _pageSize 每页记录数
*/
public Pager(int _currentPage, int _totalRows, int _pageSize) {
totalRows = _totalRows;
pageSize = _pageSize;
totalPages = totalRows / pageSize;
if (totalRows % pageSize > 0)totalPages++;
if(totalRows <= 0) {
currentPage = 1;
startRow = 0;
}
else if (_currentPage <= 0 ) {
currentPage = 1;
startRow = 0;
} else if(_currentPage > totalPages) {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;
} else {
currentPage = _currentPage;
startRow = (currentPage - 1) * pageSize;
}
}
public void first() {
currentPage = 1;
startRow = 0; }
public void prev() {
if (currentPage <= 1) currentPage = 1;
else currentPage--;
startRow = (currentPage - 1) * pageSize;}
public void next() {
if (currentPage < totalPages) currentPage++;
startRow = (currentPage - 1) * pageSize;}
public void last() {
currentPage = totalPages;
startRow = (currentPage - 1) * pageSize;}
public void setTotalRows(int totalRows) {this.totalRows = totalRows;}
public int getTotalRows() { return totalRows;}
public int getPageSize() {return pageSize;}
public void setCurrentPage(int currentPage){this.currentPage = currentPage;}
public int getCurrentPage() {return currentPage;}
public int getTotalPages() {return totalPages;}
public void setTotalPages(int totalPages) {this.totalPages = totalPages;}
public int getStartRow() {return startRow;}
public void setPageSize(int pageSize) {this.pageSize = pageSize;}
public void setStartRow(int startRow) {this.startRow = startRow;}
}
就是取出合适的页码,并实现首页,前一页,后一页,尾页四个动作,
至于在数据库查询SQL中,使用ORACLE rownum pager.getStartRow()