以前一直沒有自己寫過分頁對象,自己模仿着寫了一個分頁對象,寫完之后感覺也是挺簡單的
package com.css.util;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.formula.functions.T;
/**
* <p>Title:PageBean </p>
* <p>Description: 分頁對象demo</p>
* @author jlmao
* @date 2017-6-14 上午11:20:22
*/
@SuppressWarnings("hiding")
public class PageBean<T> implements Serializable {
private static final long serialVersionUID = -6710532081301192385L;
/**
* 基本屬性分析:
* 1.當前頁 currentPage
* 2.每頁多少數據 pageSize
* 3.數據總條數 totalCount
* 4.總頁數 pageCount
* 5.數據集合 List<T> list
* 6.每頁顯示的最多的頁碼數 pageNumSize
* 7.拼接的分頁字符串 pageHtml
*/
private int currentPage = 1;
private int pageSize = 5;
private int totalCount;
private int pageCount;
private List<T> list;
private int pageNumSize = 5;
private String pageHtml;
/**
* 基本邏輯分析:
* 1.list總數判斷得出totalCount和pageCount
* 2.currentPage*pageSize得出startRow和endRow
* 3.通過list.submit(startRow,endRow)得出需要展示的當前頁的數據;
* 4.通過currentPage、pageSize、totalCount、pageCount拼出分頁html字符串前台
* 需要拼接的項目有首頁、上一頁、下一頁、末頁以及中間具體頁碼
* 5.前台點擊上述項目時,ajax傳遞currentPage和pageSize及查詢條件至后台
* 6.根據查詢條件查詢出list,和currentPage和PageSize傳入PageBean對象生成需要展示的list以及分頁html
*/
/**
* <p>Description: pageBean初始化方法</p>
* @param list 數據集合 currentPage 頁面傳遞的當前頁碼 pageSize 頁面傳遞的pageSize
* @author jlmao
* @date 2017-6-14 上午11:41:19
*/
public void initPage(List<T> list, Integer currentPage){
//1.初始化各屬性的值
if(currentPage != null && currentPage >= 1){
this.currentPage = currentPage;
}
this.list = list;
this.totalCount = this.list.size();
this.pageCount = totalCount%this.pageSize == 0?totalCount/this.pageSize:totalCount/this.pageSize+1;
int startRow = (this.currentPage-1)*this.pageSize;
int endRow = this.currentPage*this.pageSize;
if(endRow > list.size()){
endRow = list.size();
}
//2.拼接分頁html
this.pageHtml = initPageHtml();
//3.截取list
if(!this.list.isEmpty()){
this.list = this.list.subList(startRow, endRow);
}
}
/**
* <p>Description: 拼接分頁html</p>
* @author jlmao
* @date 2017-6-14 下午1:53:56
*/
public String initPageHtml(){
/**
* 基本邏輯分析:
* 1.判斷list是否為空
* 2.根據currentPage判斷是否有首頁、上一頁、下一頁、末頁
*/
StringBuffer sb = new StringBuffer();
if(!this.list.isEmpty()){
/**
* 樣式及hover
*/
String background = "background: #2db3c1;border: 1px solid #2db3c1;color: #fff;";
String style = "text-decoration:none;padding: 8px 10px;margin-left: 3px;border: 1px solid #cdcccc;color: #2db3c1;cursor: pointer;max-width: 50px;";
String hover = "onmouseover=\"$(this).attr('style','"+style+background+"');\" onmouseout=\"$(this).attr('style','"+style+"');\"";
//頁面拼接開始
String firstPage = "<a href='javascript:skipToPage(1);' style=\""+style+"\""+hover+">首頁</a>";
sb.append(firstPage);
String prePage = "";
if(this.currentPage != 1){
prePage = "<a href='javascript:skipToPage("+(this.currentPage-1)+");' style=\""+style+"\""+hover+">上一頁</a>";
}else{
prePage = "<a href='javascript:skipToPage("+(this.currentPage-1)+");' style=\""+style+"display:none;\""+hover+">上一頁</a>";
}
sb.append(prePage);
//當前頁小於每頁頁碼數時,默認從第一個開始
int num = 1;
//當前頁大於每頁頁碼數時
if(this.currentPage >= pageNumSize){
if((this.currentPage+(pageNumSize-1)/2) >= this.pageCount ){
num = this.currentPage-(this.pageNumSize-(this.pageCount+1-this.currentPage));
}else{
num = this.currentPage - (pageNumSize-1)/2;
}
}
int endNum = (num+pageNumSize-1) > pageCount ?pageCount:(num+pageNumSize-1);
for(int i = num; i <= endNum; i++){
String select = "";
String pageNumHtml = "<a href='javascript:skipToPage("+i+");' style=\""+style+"\""+hover+">"+i+"</a>";
if(this.currentPage == i){
select = background;
pageNumHtml = "<a href='javascript:skipToPage("+i+");' style=\""+style+select+"\">"+i+"</a>";
}
sb.append(pageNumHtml);
}
String nextPage = "";
if(this.currentPage != this.pageCount){
nextPage = "<a href='javascript:skipToPage("+(this.currentPage+1)+");' style=\""+style+"\""+hover+">下一頁</a>";
}else{
nextPage = "<a href='javascript:skipToPage("+(this.currentPage+1)+");' style=\""+style+"display:none;\""+hover+">下一頁</a>";
}
sb.append(nextPage);
String endPage = "<a href='javascript:skipToPage("+this.pageCount+");' style=\""+style+"\""+hover+">末頁</a>";
sb.append(endPage);
String counyStr = "<span style=\"color: #947878;\">共"+totalCount+"條數據/"+pageCount+"頁</span>";
sb.append(counyStr);
}
return sb.toString();
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
if(currentPage >= 1){
this.currentPage = currentPage;
}
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
if(pageSize >= 1){
this.pageSize = pageSize;
}
}
public int getTotalCount() {
return totalCount;
}
public int getPageCount() {
return pageCount;
}
public int getPageNumSize() {
return pageNumSize;
}
public void setPageNumSize(int pageNumSize) {
if(pageNumSize >= 1){
this.pageNumSize = pageNumSize;
}
}
public List<T> getList() {
return list;
}
public String getPageHtml() {
return pageHtml;
}
}