分页类: 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* :无下一页