以前一直没有自己写过分页对象,自己模仿着写了一个分页对象,写完之后感觉也是挺简单的

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;
}
}

Java 分页对象的更多相关文章

  1. java 分页对象以及数据库分页查询

    import java.util.List; public class Pager<T> { private Integer pageSize; private Integer total ...

  2. java integer对象判断两个数字是否相等

    java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...

  3. 数据你把它的金额-JAVA分页

    数据量你造吗-JAVA分页 原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...

  4. 数据量你造吗-JAVA分页

    原创地址:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks 学习的心态第一,解行要相应.其实<弟子规>在“余力 ...

  5. [Java] 一种好的JAVA分页实现

    喃都不说了,贴代码,意思都在代码里面了 Page.java //分页类.定义分页字段信息,供前台页面使用 package com.core.common; import java.util.List; ...

  6. 规则引擎集成接口(九)Java类对象

    Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...

  7. java类 对象 和构造方法

    github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...

  8. 转载---Java集合对象的深度复制与普通复制

    原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...

  9. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

随机推荐

  1. JSTL(使用if-else实现分页)

    一.认识标签 <c:choose>标签没有任何属性. <c:when>标签具有以下列出的一个属性. <c:otherwise>标签没有任何属性. <c:whe ...

  2. Python学习day05 - Python基础(3) 格式化输出和基本运算符

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  3. <每日一题>题目10:求斐波拉契数列

    def func(x): m,n = 0,1 i = 0 while i < x: yield m m,n = n,m+n i += 1 fib = [] get_func = func(100 ...

  4. springboot项目中进行并发测试

    一 利用工具包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  5. 04-4-typeof

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 手机端META详细解释

    一.天猫 <title>天猫触屏版</title> <meta content="text/html; charset=utf-8" http-equ ...

  7. Gym-102141E

    https://vjudge.net/problem/Gym-102141E 用set乱搞 #include<iostream> #include<cstdio> #inclu ...

  8. grant

    # 添加超级用户 grant all privileges on *.* to 'dump_tmp'@'10.10.10.10' identified by 'dump_tmp'; grant all ...

  9. iTerm2配色和去掉profile提示框

    效果: 配色方案代码地址: https://github.com/mbadolato/iTerm2-Color-Schemes 点击最右边的绿色区域,再点击  “import”, 打开刚下载解压好的文 ...

  10. Odoo Documentation : Environment

    Environment The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cur ...