分頁類: PageHelper.java
package util.helper;
public class PageHelper {
/** Configuration PageHelper **/
protected int pageSize;
protected int linkCount;
public PageHelper(int pageSize, int linkCount){
this.pageSize = pageSize;
this.linkCount = linkCount;
}
public int getPageSize() {
return pageSize;
}
public int getLinkCount() {
return linkCount;
}
/** Configuration PageHelper End **/
/** Set PageHelper **/
protected int rowCount = 0;
protected int currentPage = 1;
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
if(0 <= rowCount){
this.rowCount = rowCount;
this.updatePageCount();
}
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
if(1 <= currentPage && currentPage <= pageCount){
this.currentPage = currentPage;
this.updateBeginIndex();
this.updateHasPrevPage();
this.updateHasNextPage();
this.updateStartPage();
}
}
/** Set PageHelper End **/
/** Operator PageHelper **/
protected int pageCount = 1;
protected int beginIndex = 0;
protected boolean hasPrevPage = false;
protected int prevPage = 1;
protected boolean hasNextPage = false;
protected int nextPage = 1;
protected int startPage = 1;
protected int endPage = 1;
public int getPageCount() {
return pageCount;
}
public int getBeginIndex() {
return beginIndex;
}
public boolean isHasPrevPage() {
return hasPrevPage;
}
public int getPrevPage() {
return prevPage;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public int getNextPage() {
return nextPage;
}
public int getStartPage() {
return startPage;
}
public int getEndPage() {
return endPage;
}
/** Operator PageHelper End **/
/** Update PageHelper **/
protected void updatePageCount(){
// from 1 to pageCount
pageCount = (rowCount - 1) / pageSize + 1;
this.updateHasNextPage();
this.updateStartPage();
}
protected void updateBeginIndex(){
// from (currentPage - 1) * pageSize to currentPage * pageSize - 1
beginIndex = (currentPage - 1) * pageSize;
}
protected void updateHasPrevPage(){
hasPrevPage = 1 < currentPage;
this.updatePrevPage();
}
protected void updatePrevPage(){
if(hasPrevPage){
prevPage = currentPage - 1;
}else{
prevPage = currentPage;
}
}
protected void updateHasNextPage(){
hasNextPage = pageCount > currentPage;
this.updateNextPage();
}
protected void updateNextPage(){
if(hasNextPage){
nextPage = currentPage + 1;
}else{
nextPage = currentPage;
}
}
protected void updateStartPage(){
int mid = (linkCount + 1) / 2;
if(currentPage <= mid){
startPage = 1;
}else if(pageCount - currentPage < mid){
startPage = pageCount - linkCount + 1;
if(startPage <= 0){
startPage = 1;
}
}else{
startPage = currentPage - mid + 1;
}
this.updateEndPage();
}
protected void updateEndPage(){
int end = startPage + linkCount - 1;
if(end < pageCount){
endPage = end;
}else{
endPage = pageCount;
}
}
/** Update PageHelper End **/
}
分頁測試類: PageHelperUtil.java
package com.helper.unit;
import org.junit.Test;
import util.helper.PageHelper;
public class PageHelperUtil {
private void output(PageHelper pageHelper){
System.out.print("上一頁:" + pageHelper.getPrevPage() +
" 下一頁:" + pageHelper.getNextPage() +
" 起始下標:" + pageHelper.getBeginIndex());
if(pageHelper.isHasPrevPage()){
System.out.print(" 有上一頁: ");
}else{
System.out.print(" 無上一頁: ");
}
for(int i=pageHelper.getStartPage(); i<=pageHelper.getEndPage(); i++){
if(pageHelper.getCurrentPage() == i){
System.out.print(" *" + i + "*");
}else{
System.out.print(" " + i);
}
}
if(pageHelper.isHasNextPage()){
System.out.print(" :有下一頁 ");
}else{
System.out.print(" :無下一頁");
}
System.out.println("\n");
}
@Test
public void test() {
// 實例化一個每頁顯示10條記錄,有5個鏈接按鈕的分頁工具
PageHelper pageHelper = new PageHelper(10, 5);
// 設置總記錄數
pageHelper.setRowCount(90);
// 設置當前頁
pageHelper.setCurrentPage(1);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(2);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(3);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(5);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(7);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(8);
output(pageHelper);
// 設置當前頁
pageHelper.setCurrentPage(9);
output(pageHelper);
}
}
測試結果:
上一頁:1 下一頁:2 起始下標:0 無上一頁: *1* 2 3 4 5 :有下一頁
上一頁:1 下一頁:3 起始下標:10 有上一頁: 1 *2* 3 4 5 :有下一頁
上一頁:2 下一頁:4 起始下標:20 有上一頁: 1 2 *3* 4 5 :有下一頁
上一頁:4 下一頁:6 起始下標:40 有上一頁: 3 4 *5* 6 7 :有下一頁
上一頁:6 下一頁:8 起始下標:60 有上一頁: 5 6 *7* 8 9 :有下一頁
上一頁:7 下一頁:9 起始下標:70 有上一頁: 5 6 7 *8* 9 :有下一頁
上一頁:8 下一頁:9 起始下標:80 有上一頁: 5 6 7 8 *9* :無下一頁