package selfimpr.page;

import java.util.List;

/**
* 分页模型
* @param <T> 数据泛型
* @author selfimpr
* @blog http://blog.csdn.net/lgg201
* @email lgg860911@yahoo.com.cn
*/
public class PageModel<T> {
private int total; private int page; private int pagesize; private List<T> datas; /**
* 总记录数
* @return
*/
public int getTotal() {
return total;
} public void setTotal(int total) {
this.total = total;
} /**
* 数据
* @return
*/
public List<T> getDatas() {
return datas;
} public void setDatas(List<T> datas) {
this.datas = datas;
} /**
* 当前页
* @return
*/
public int getPage() {
return page;
} public void setPage(int page) {
this.page = page;
} /**
* 每页显示条数
* @return
*/
public int getPagesize() {
return total;
} public void setPagesize(int pagesize) {
this.pagesize = pagesize;
} /**
* 总页数
* @return
*/
public int getTotalPage() {
return (total + pagesize - 1) / pagesize;
} /**
* 下一页
* @return
*/
public int getNext() {
int totalPage = getTotalPage();
return page >= totalPage ? totalPage : page + 1;
} /**
* 上一页
* @return
*/
public int getPrev() {
return page <= 1 ? 1 : page - 1;
} /**
* 第一页
* @return
*/
public int getFirst() {
return 1;
} /**
* 最后一页
* @return
*/
public int getLast() {
return getTotalPage();
} /**
* 获取当前页之前n页的页码
* @param n
* @return
*/
public int[] getPrevN(int n) {
int tmp = page - n;
int start = tmp >= 1 ? tmp : 1;
int size = page - start;
int[] prevN = new int[size];
for(int i = 0; i < size; i ++) {
prevN[i] = start ++;
}
return prevN;
} /**
* 获取当前页之后n页的页码
* @param n
* @return
*/
public int[] getNextN(int n) {
int tmp = page + n;
int totalPage = getTotalPage();
int end = tmp <= totalPage ? tmp : totalPage;
int size = end - page;
int[] nextN = new int[size];
for(int i = 0; i < size; i ++) {
nextN[i] = page + i + 1;
}
return nextN;
}
}

其他:

package com.bjpowernode.crm.workbench.vo;

import java.util.List;

/**
* 简介:
* 作者:
* 日期:2019/4/27
*/
public class PaginationVO<T> {
private int total;
private List<T>pageList; public int getTotal() {
return total;
} public PaginationVO<T> setTotal(int total) {
this.total = total;
return this;
} public List<T> getPageList() {
return pageList;
} public PaginationVO<T> setPageList(List<T> pageList) {
this.pageList = pageList;
return this;
}
}

其他封装:

package cn.asiatelecom.wlan.dao;

import java.util.List;

/**
* 用于分页的工具类
* @author 莫取网名
*/
public class Pager<T> { private List<T> list; //对象记录结果集
private int total = 0; // 总记录数
private int limit = 20; // 每页显示记录数
private int pages = 1; // 总页数
private int pageNumber = 1; // 当前页 private boolean isFirstPage=false; //是否为第一页
private boolean isLastPage=false; //是否为最后一页
private boolean hasPreviousPage=false; //是否有前一页
private boolean hasNextPage=false; //是否有下一页 private int navigatePages=8; //导航页码数
private int[] navigatePageNumbers; //所有导航页号 public Pager(int total, int pageNumber) {
init(total, pageNumber, limit);
} public Pager(int total, int pageNumber, int limit) {
init(total, pageNumber, limit);
} private void init(int total, int pageNumber, int limit){
//设置基本参数
this.total=total;
this.limit=limit;
this.pages=(this.total-1)/this.limit+1; //根据输入可能错误的当前号码进行自动纠正
if(pageNumber<1){
this.pageNumber=1;
}else if(pageNumber>this.pages){
this.pageNumber=this.pages;
}else{
this.pageNumber=pageNumber;
} //基本参数设定之后进行导航页面的计算
calcNavigatePageNumbers(); //以及页面边界的判定
judgePageBoudary();
} /**
* 计算导航页
*/
private void calcNavigatePageNumbers(){
//当总页数小于或等于导航页码数时
if(pages<=navigatePages){
navigatePageNumbers=new int[pages];
for(int i=0;i<pages;i++){
navigatePageNumbers[i]=i+1;
}
}else{ //当总页数大于导航页码数时
navigatePageNumbers=new int[navigatePages];
int startNum=pageNumber-navigatePages/2;
int endNum=pageNumber+navigatePages/2; if(startNum<1){
startNum=1;
//(最前navPageCount页
for(int i=0;i<navigatePages;i++){
navigatePageNumbers[i]=startNum++;
}
}else if(endNum>pages){
endNum=pages;
//最后navPageCount页
for(int i=navigatePages-1;i>=0;i--){
navigatePageNumbers[i]=endNum--;
}
}else{
//所有中间页
for(int i=0;i<navigatePages;i++){
navigatePageNumbers[i]=startNum++;
}
}
}
} /**
* 判定页面边界
*/
private void judgePageBoudary(){
isFirstPage = pageNumber == 1;
isLastPage = pageNumber == pages && pageNumber!=1;
hasPreviousPage = pageNumber!=1;
hasNextPage = pageNumber!=pages;
} public void setList(List<T> list) {
this.list = list;
} /**
* 得到当前页的内容
* @return {List}
*/
public List<T> getList() {
return list;
} /**
* 得到记录总数
* @return {int}
*/
public int getTotal() {
return total;
} /**
* 得到每页显示多少条记录
* @return {int}
*/
public int getLimit() {
return limit;
} /**
* 得到页面总数
* @return {int}
*/
public int getPages() {
return pages;
} /**
* 得到当前页号
* @return {int}
*/
public int getPageNumber() {
return pageNumber;
} /**
* 得到所有导航页号
* @return {int[]}
*/
public int[] getNavigatePageNumbers() {
return navigatePageNumbers;
} public boolean isFirstPage() {
return isFirstPage;
} public boolean isLastPage() {
return isLastPage;
} public boolean hasPreviousPage() {
return hasPreviousPage;
} public boolean hasNextPage() {
return hasNextPage;
} public String toString(){
String str=new String();
str= "[" +
"total="+total+
",pages="+pages+
",pageNumber="+pageNumber+
",limit="+limit+
//",navigatePages="+navigatePages+
",isFirstPage="+isFirstPage+
",isLastPage="+isLastPage+
",hasPreviousPage="+hasPreviousPage+
",hasNextPage="+hasNextPage+
",navigatePageNumbers=";
int len=navigatePageNumbers.length;
if(len>0)str+=(navigatePageNumbers[0]);
for(int i=1;i<len;i++){
str+=(" "+navigatePageNumbers[i]);
}
//sb+=",list="+list;
str+="]";
return str;
}
}

通用分页model封装pageList的更多相关文章

  1. Spring Boot mybatis HashMap +layui 通用分页

    背景: mybatis 常用数据查询的方法都是先建实体类,再建Mapper,最后写Service,如果只是单纯的去查询数据显示,这样操作太麻烦.本文就以mybatis +layui创建通用分页类,简化 ...

  2. 利用EF和C#泛型实现通用分页查询

    利用EF和C#泛型实现通用分页查询       Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (ORM) 解决方案,是微软的ORM框架.此框架将数据库中的 ...

  3. asp.net MVC通用分页组件 使用方便 通用性强

    asp.net MVC通用分页组件 使用方便 通用性强   该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...

  4. PHP通用分页(Pager)类

    三种不同展示方式 附上style~ 1. 效果图1 2.效果图2    3. 效果图3 4. 分页类主体 <?php /** * PHP通用分页类 * show(2) 1 ... 62 63 6 ...

  5. ReactJS实现的通用分页组件

    大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...

  6. SQL Server 2008 通用分页存储过程

    1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...

  7. SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)

    SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...

  8. 支持DISTINCT的通用分页存储过程(SQL2005)

    /****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...

  9. ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页

    一.实体类或属性名与数据库关键字冲突问题1.实体类名与数据库中的关键字冲突比如:实体表User与oracle中的系统表冲突解决方式1:在xml中添加table属性,指定表名,使其不与name默认相等 ...

随机推荐

  1. 项目中常用的19条MySQL优化技巧

    原文:https://segmentfault.com/a/1190000012155267 声明一下:下面的优化方案都是基于 “ Mysql-索引-BTree类型 ” 的 一.EXPLAIN 做My ...

  2. 实现一个Promise

    实现一个Promise promise特点 一个promise的当前状态只能是pending.fulfilled和rejected三种之一.状态改变只能是pending到fulfilled或者pend ...

  3. 解决移动端1px的问题,设备像素比devicePixelRatio的应用

    本文主要针对移动端1物理像素问题展开 解决这个问题先要了解一下概念: CSS像素(CSS Pixel):(通俗说:样式中写的值)就是我们在样式代码中常写的逻辑像素,是一个抽象概念,实际并不存在 设备独 ...

  4. 洛谷 题解 P1908 【逆序对】

    一开始竟然妄想用\(n^2\)的算法过这题,然而这是不可能的 所以只好写归并排序来求逆序対惹 比如将下面两个区间排序 3 4 7 9 1 5 8 10 首先将右区间的\(1\)取出,放到\(r_k\) ...

  5. Asp.Net Core文件上传

    文件上传功能在实际开发中经常使用,在 .Net Core中,文件上传接收类型不再使用 HttpPostedFile 或 HttpFileCollection来接收,而是使用 IFormFile 或 I ...

  6. Layui 上传图片到磁盘上 + Tomcat 配置虚拟路径

    Layui 上传图片到磁盘上 + Tomcat 配置虚拟路径 Tomcat 配置虚拟路径 找到 eclipse 中 tomcat 下面的 server.xml 文件,在 Host 标签里面添加 < ...

  7. yum 安装 epel-release 后出现yum doesn’t have enough cached data to continue错误的解决方案

    工作中需要部署docker,由于是内网环境,无法直接访问外网,于是考虑在内网搭建yum私有源进行安装,内网服务器操作系统为centos 7.4.根据docker的官方安装方式进行安装时,要求安装 ep ...

  8. U1. 广度优先搜索(BFS)和 广度优先搜索(DFS)

    广度优先搜索用栈(stack)来实现,整个过程可以想象成一个倒立的树形: 1.把根节点压入栈中. 2.每次从栈中弹出一个元素,搜索所有在它下一级的元素,把这些元素压入栈中.并把这个元素记为它下一级元素 ...

  9. Jfinal初次尝试及Jetty使用相关问题

    Jetty介绍 Jetty官网:http://www.eclipse.org/jetty/ 参考:Jetty使用教程(一)--开始使用Jetty 1. 使用 参考上面文档,但是有些更新: echo $ ...

  10. Ubuntu部署ftp服务器

    Ubuntu 16.04 FTP服务器安装及配置     FTP File Transfer Protocol文件传输协议,两台计算机传送文件的协议,客户端可以通过FTP命令从服务器下载,上传文件,修 ...