最近写了一个代码生成工具,分享下该工具下的分页工具

一、分页工具类

package com.qy.code.api.page;

import java.io.Serializable;
import java.util.List; /**
* @author shizhenwei
*
* @param <T>用于向前台返还List所用
*/
public class PageInfo<T> implements Serializable { private static final long serialVersionUID = 1L; /**
* 当前页码数
*/
private int pageNum;
/**
* 每页显示的记录数
*/
private int pageSize;
/**
* 开始行号
*/
private long startRow;
/**
* 结束行号
*/
private long endRow;
/**
* 总记录数
*/
private long rows;
/**
* 总页码数
*/
private int pages;
/**
* 导航条 页码数
*/
private int navigatePages;
/**
* 导航条 具体页码数
*/
private int[] navigatePageNums;
/**
* 导航条上的开始页
*/
private int navigateStartPage;
/**
* 导航条上的结束页
*/
private int navigateEndPage;
/**
* 首页页码
*/
private int firstPage;
/**
* 上一页页码
*/
private int previousPage;
/**
* 下一页页码
*/
private int nextPage;
/**
* 尾页页码
*/
private int lastPage;
/**
* 是否有上一页
*/
private boolean hasPreviousPage = false;
/**
* 是否有下一页
*/
private boolean hasNextPage = false;
/**
* 是否为首页
*/
private boolean isFirstPage = false;
/**
* 是否为最后一页
*/
private boolean isLastPage = false; // 存放本次分页查询出来的数据
private List<T> list; /**
* @param pageNum
* @param pageSize
* @param rows
* @param navigatePages
*/
public PageInfo(List<T> list) {
if (list instanceof PageList) {
PageList<T> pageList = (PageList<T>)list;
// 当前页码
this.pageNum = pageList.getPageNum();
// 每页显示的记录数
this.pageSize = pageList.getPageSize();
// 总记录数
this.rows = pageList.getRows();
// 导航条 页码数
this.navigatePages = pageList.getNavigatePages();
// 总页码数
this.pages = (int) Math.ceil(this.rows * 1.0 / this.pageSize);
// 当前页码大于总页码数时,当前页码=总页码数
if (this.pageNum > this.pages) {
this.pageNum = this.pages;
}
// 开始行号
this.startRow = (this.pageNum * this.pageSize)-(this.pageSize-1);
// 结束行号
this.endRow = this.pageNum * this.pageSize;
//当结束行号>总行数时,结束行号=总行数
if(this.endRow > rows) {
this.endRow = rows;
}
// 导航条 开始页码和结束页码
this.navigateStartPage = (this.pageNum - this.navigatePages / 2) > 0 ? (this.pageNum - this.navigatePages / 2) : 1;
this.navigateEndPage = this.navigateStartPage+this.navigatePages;
if(this.navigateEndPage>this.pages){
this.navigateEndPage = this.pages;
if(this.navigateEndPage>this.navigatePages){
this.navigateStartPage = this.navigateEndPage-this.navigatePages+1;
}
}
//导航条具体页数
this.navigatePageNums = new int[this.navigatePages];
for(int i=this.navigateStartPage; i<=this.navigateEndPage; i++){
this.navigatePageNums[i-this.navigateStartPage] = i;
} //设置首页
this.firstPage = 1;
//设置尾页
this.lastPage = this.pages;
//是否为第一页
this.isFirstPage = this.pageNum==this.firstPage;
//是否为最后一页
this.isLastPage = this.pageNum==this.lastPage;
// 设置上一页
if (this.pageNum > 1) {
this.hasPreviousPage = true;
this.previousPage = this.pageNum - 1;
}
// 设置下一页
if (this.pageNum < this.pages) {
this.hasNextPage = true;
this.nextPage = this.pageNum + 1;
}
}
} public int getPageNum() {
return pageNum;
} public void setPageNum(int pageNum) {
this.pageNum = pageNum;
} public int getPageSize() {
return pageSize;
} public void setPageSize(int pageSize) {
this.pageSize = pageSize;
} public long getStartRow() {
return startRow;
} public void setStartRow(long startRow) {
this.startRow = startRow;
} public long getEndRow() {
return endRow;
} public void setEndRow(long endRow) {
this.endRow = endRow;
} public long getRows() {
return rows;
} public void setRows(long rows) {
this.rows = rows;
} public int getPages() {
return pages;
} public void setPages(int pages) {
this.pages = pages;
} public int getNavigatePages() {
return navigatePages;
} public void setNavigatePages(int navigatePages) {
this.navigatePages = navigatePages;
} public int[] getNavigatePageNums() {
return navigatePageNums;
} public void setNavigatePageNums(int[] navigatePageNums) {
this.navigatePageNums = navigatePageNums;
} public int getNavigateStartPage() {
return navigateStartPage;
} public void setNavigateStartPage(int navigateStartPage) {
this.navigateStartPage = navigateStartPage;
} public int getNavigateEndPage() {
return navigateEndPage;
} public void setNavigateEndPage(int navigateEndPage) {
this.navigateEndPage = navigateEndPage;
} public int getFirstPage() {
return firstPage;
} public void setFirstPage(int firstPage) {
this.firstPage = firstPage;
} public int getPreviousPage() {
return previousPage;
} public void setPreviousPage(int previousPage) {
this.previousPage = previousPage;
} public int getNextPage() {
return nextPage;
} public void setNextPage(int nextPage) {
this.nextPage = nextPage;
} public int getLastPage() {
return lastPage;
} public void setLastPage(int lastPage) {
this.lastPage = lastPage;
} public boolean isHasPreviousPage() {
return hasPreviousPage;
} public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
} public boolean isHasNextPage() {
return hasNextPage;
} public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
} public boolean isFirstPage() {
return isFirstPage;
} public void setFirstPage(boolean isFirstPage) {
this.isFirstPage = isFirstPage;
} public boolean isLastPage() {
return isLastPage;
} public void setLastPage(boolean isLastPage) {
this.isLastPage = isLastPage;
} public List<T> getList() {
return list;
} public void setList(List<T> list) {
this.list = list;
} public static long getSerialversionuid() {
return serialVersionUID;
} }

二、分页集合LIST

package com.qy.code.api.page;

import java.util.ArrayList;

/**
* 描述:分页结果集
* @author 七脉
*/
public class PageList<E> extends ArrayList<E> { private static final long serialVersionUID = 8172768353827243795L; /**
* 页码
*/
private int pageNum; /**
* 每页记录数
*/
private int pageSize;
/**
* 总共记录数
*/
private int rows;
/**
* 分页下标
*/
private int limitIndex;
/**
* 导航条固定显示多少页
*/
private int navigatePages; public PageList(int pageNum, int pageSize, int rows) {
super();
this.pageNum = pageNum;
this.pageSize = pageSize;
this.rows = rows;
} public PageList(int pageNum, int pageSize, int rows, int navigatePages) {
super();
this.pageNum = pageNum;
this.pageSize = pageSize;
this.rows = rows;
this.limitIndex = (this.pageNum * this.pageSize)-(this.pageSize-1);
this.navigatePages = navigatePages;
} public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
this.pageNum = pageNum;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getNavigatePages() {
return navigatePages;
}
public void setNavigatePages(int navigatePages) {
this.navigatePages = navigatePages;
} public int getLimitIndex() {
return limitIndex;
} public void setLimitIndex(int limitIndex) {
this.limitIndex = limitIndex;
} }

三、ModelAndResult对象

  可以设置为@ResponseBody全局响应对象

  也可以配合前台自带分页工具JS使用

package com.qy.code.api.result;

import java.util.HashMap;

/**
*
* <br>类 名: ModelAndResult
* <br>描 述: 用户controller @responsebody
* <br>作 者: shizhenwei
* <br>创 建: 2017年9月6日
* <br>版 本: v1.0.0
* <br>
* <br>历 史: (版本) 作者 时间 注释
*/ public class ModelAndResult extends HashMap<String, Object> { /**
*
*/
private static final long serialVersionUID = 8884722775905868487L; /** 操作是否成功 */
public final static String SUCCESS = "success"; /** 返回数据 */
public final static String DATA = "data"; /** 返回消息 */
public final static String MESSAGE = "message"; /** 返回code */
public final static String CODE = "code"; /** 总记录(用于分页查询) **/
public final static String TOTAL = "total"; /** 返回其他信息 */
public final static String OTHERS = "others"; public ModelAndResult() {
setSuccess(true);
} public <T> ModelAndResult(T data) {
setSuccess(true);
setData(data);
} public ModelAndResult(boolean success,String message) {
setSuccess(success);
setMessage(message);
} public <T> ModelAndResult(boolean success,String message, T data) {
setSuccess(success);
setMessage(message);
setData(data);
} public <T> void setAttribute(String key, T value){
put(key, value);
} @SuppressWarnings("unchecked")
public <T> T getAttribute(String key){
return (T) get(key);
} public boolean isSuccess() {
return getAttribute(SUCCESS);
} public void setSuccess(boolean success) {
setAttribute(SUCCESS, success);
} public <T> T getData() {
return getAttribute(DATA);
} public <T> void setData(T data) {
setAttribute(DATA, data);
} public String getMessage() {
return getAttribute(MESSAGE);
} public void setMessage(String message) {
setAttribute(MESSAGE, message);
} public Long getTotal() {
return getAttribute(TOTAL);
} public void setTotal(Long total) {
setAttribute(TOTAL, total);
} public Object getOthers() {
return getAttribute(OTHERS);
} public void setOthers(Object others) {
setAttribute(OTHERS, others);
} public static String getCode() {
return CODE;
} public void setCode(Object code) {
setAttribute(CODE, code);
}
}

JAVA分页工具类的更多相关文章

  1. PageUtil.java分页工具类

    package com.chabansheng.util; /** * 分页工具类 * @author Administrator * */ public class PageUtil { /** * ...

  2. JAVA 分页工具类及其使用

    Pager.java package pers.kangxu.datautils.common; import java.io.Serializable; import java.util.List; ...

  3. java 分页工具类

    //13年写的,今天(17)拷贝到博客园 package com.sicdt.sicsign.web.utils; import java.io.Serializable; import java.u ...

  4. 分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708]http ...

  5. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  6. 项目经验分享——Java常用工具类集合 转

    http://blog.csdn.net/xyw591238/article/details/51678525 写在前面     本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数 ...

  7. Java常用工具类之数据库操作辅助类DBUtil.java

    package com.qushida.util; import java.beans.BeanInfo; import java.beans.Introspector; import java.be ...

  8. Java Properties工具类详解

    1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠 ...

  9. Java json工具类,jackson工具类,ObjectMapper工具类

    Java json工具类,jackson工具类,ObjectMapper工具类 >>>>>>>>>>>>>>> ...

随机推荐

  1. 第08组 Beta冲刺(4/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ? 测试新功能中 展示GitHub当日代码/文档签入记录 接下来的计划 ...

  2. python总结三

    1.线性表若采用链式存储结构的时候,要求内存中可用存储单位的地址是:连续或者不连续都可以 链式存储去找后继节点或者前驱节点是使用指针来实现的,不需要连续的内存,当然,也可以是连续的内存地址 2. 线性 ...

  3. 使用CSS隐藏元素滚动条

    如何隐藏滚动条,同时仍然可以在任何元素上滚动? 首先,如果需要隐藏滚动条并在内容溢出时显示滚动条,只需要设置overflow:auto样式即可.想要完全隐藏滚动条只需设置overflow:hidden ...

  4. 运维-安装rabbitmq 集群

    服务器:   online-platform-rabbitmq-01 online-platform-rabbitmq-02 online-platform-rabbitmq-03 绑定HOSTS: ...

  5. 提取文件中的每一个mask,并将mask命名为文件名字

    import cv2 as cv import random import glob import os from PIL import Image import shutil def get_sam ...

  6. [原创]K8域控植入脚本生成器(内网渗透/RPC不可用解决方案)

    0x001 简介 当IPC或WMI无法访问域内机器时,可通过脚本上控. 我们可以在个人机的开机注销重启脚本里配置持久化. 域环境下同样也有开机脚本,但得在在域控机器配置 可以使用BAT\VBS等脚本, ...

  7. 【转】Mac入门(一)基本用法

    我前五年一直外包到微软,每天使用的都是Windows系统和.NET. 2012年加入VMware,  公司的工作机是台Mac 笔记本(MacBook Pro), 所以有机会接触Mac系统 Mac和Wi ...

  8. Centos Docker 安装 Apache Guacamole

    经常在ubuntu上折腾,偶尔在centos来也来玩一把吧 1.安装DOCKER cd /etc/yum.repos.d wget https://download.docker.com/linux/ ...

  9. 【简记】修改Docker数据目录位置,包含镜像位置

    为啥要改? Docker安装后默认下载的位置在/var/lib/docker ,如果/var分区没有独立分出来,Linux下默认是与/根分区在一起.一般我们装Linux系统的时候,除了做邮件服务器外, ...

  10. centos下 yum快速安装maven

    wget http://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos ...