Java 分页对象
以前一直没有自己写过分页对象,自己模仿着写了一个分页对象,写完之后感觉也是挺简单的
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 分页对象的更多相关文章
- java 分页对象以及数据库分页查询
import java.util.List; public class Pager<T> { private Integer pageSize; private Integer total ...
- java integer对象判断两个数字是否相等
java integer对象判断两个数字是否相等,不一定对 问题发生的背景:javaweb的项目,起先,因为在java中实体类中的int类型在对象初始化之后会给int类型的数据默认赋值为0,这样在很多 ...
- 数据你把它的金额-JAVA分页
数据量你造吗-JAVA分页 原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),须要转载的,保留下! Thanks 学习的心态第一,解行要对应. 事实 ...
- 数据量你造吗-JAVA分页
原创地址: http://www.cnblogs.com/Alandre/ (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks 学习的心态第一,解行要相应.其实<弟子规>在“余力 ...
- [Java] 一种好的JAVA分页实现
喃都不说了,贴代码,意思都在代码里面了 Page.java //分页类.定义分页字段信息,供前台页面使用 package com.core.common; import java.util.List; ...
- 规则引擎集成接口(九)Java类对象
Java类对象 右键点击“对象库” —“添加java类对象”,如下图: 弹出窗体,在文本框中输入类的全名“com.flagleader.test.Test”,选择该类型后确定,如下: 显示如下,勾选上 ...
- java类 对象 和构造方法
github地址:https://github.com/lily1010/java_learn/tree/master/dog java中对象和类 java中万物皆对象,比如说动物,里面有猫,狗,鱼等 ...
- 转载---Java集合对象的深度复制与普通复制
原博文:http://blog.csdn.net/qq_29329775/article/details/49516247 最近在做算法作业时出现了错误,原因是没有弄清楚java集合的深度复制和浅度复 ...
- spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable
1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...
随机推荐
- 使用Windows任务计划程序和Python备份Mysql数据库
目标:每日定时自动备份Mysql数据库 方案: 1.安装Python: 使用的Python版本是Python3.7.1,下载地址:https://www.python.org/downloads/re ...
- python编码知识初始_ASCII码,Unicode,Utf-8,GBK
谍战片,电报,摩斯密码,相应规则(暗号),编码解码: 电脑底层是高低电平来传输信息(OSI七层模型,最底层):文件存储的本质,也是二进制,01010101 美国:ASCII码(8位表示一个字节 000 ...
- SVN 环境搭建
安装配置 安装环境 #查看系统版本环境 [root@svn ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [root@svn ~]# u ...
- [转]WPF更换主题
如果要做到一个应用程序其基本的内容不变,但改变整个应用程序的外观可以这样做: 对于每一套外观定义一个ResourceDictionary 在应用程序中,动态加载此应用程序(或窗体)的Resource ...
- 【python之路44】tornado的用法 (二)
参考:https://www.cnblogs.com/sunshuhai/articles/6253815.html 一.代码目录构建 代码目录设置如下图: #!/usr/bin/env python ...
- javaWeb-监听器Listener
监听器Listener (一)监听器Listener javaEE包括13门规范 在课程中主要学习 servlet技术 和 jsp技术 其中 servlet规范包括三个技术点:servlet lis ...
- 利用Python覆盖图像的某一部分,即改变图形一块区域(Region)的RGBA值
原图如下: 改变过后的图如下: 查阅API写法如下: from PIL import Image from PIL import ImageDraw pilim = Image.open('1.jpg ...
- 解决JSP调用JavaBean出现乱码问题
解决JSP调用JavaBean出现乱码问题 话不多说放代码 144 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style D ...
- python3没有了xrange
升级到python3的同学应该会注意到以前经常用的xrange没了! 是的,python3的range就是xrange.直接看效果! Python 2.7.13 (v2.7.13:a06454b1 ...
- 如何理解张量tensor
1 关于张量的四种定义 “张量”在不同的运用场景下有不同的定义. 第一个定义,张量是多维数组,这个定义常见于各种人工智能软件.听起来还好理解.--本文仅解释此种 2 多维数组 从第一个定义:张量是多维 ...