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. Hanoi II——汉诺塔步数求解进阶问题

    在NOJ上遇到关于汉诺塔步数的求解问题 开始读时一脸懵逼,甚至不知道输入的数据是什么意思 题目描述:给出汉诺塔的两个状态,从初始状态移动到目的状态所需要的最少步数 对于初级汉诺塔步数问题,我们可以直接 ...

  2. 前端添加视频流rtmp格式

    要求:rtmp格式, 在线直播 url地址 效果: 代码:初次打开时间较长, <!DOCTYPE html> <html> <head> <script ty ...

  3. vue中添加less配置,用于计算div高度

    需求:左边垂直的菜单栏高度设置为 100% - 导航栏的高度(3.6rem) 首先,从vue-cli脚手架里的安装的webpack模板中并没有less的依赖配置,得自己手动添加安装 安装命令::npm ...

  4. nginx+keepalived互为主主高可用配置

    和nginx主从安装配置都一样   就是配置文件 多加个vip  里面具体要改的 请看下面的配置文件 直接master1上keepalived.conf配置文件内容: ! Configuration ...

  5. esigner中name和comment互換

    1 PowerDesigner中批量根据对象的name生成comment的脚本 执行方法:Open PDM -- Tools -- Execute Commands -- Run Script Opt ...

  6. jquery绑定input的change事件

    ### jquery绑定input的change事件 背景:在做一个登录页时,如果用户未输入验证码则无法点击登录按钮,所以想到了用input的change事件,但是在写完后发现无法监听input值的改 ...

  7. Oracle数据库——查询所有用户

    查询数据库所有用户(ALL_USERS)的用户名,用户编号,创建日期 默认应该有36个用户 SELECT * FROM ALL_USERS; 查看ALL_USERS的结构 DESC ALL_USERS ...

  8. CSS之cursor用法

    cursor: url('~ROOT/shared/assets/image/vn-text-cursor-31-49.png') 22 22, nw-resize; 另外还有一个 cursor: g ...

  9. RDS for MySQL 逻辑备份文件恢复到自建数据库

    使用MySQL自带的 mysqldump 工具可以通过逻辑备份文件恢复数据库,本文将介绍详细的逻辑备份恢复数据库操作步骤. 说明 通过物理备份文件恢复到自建数据库请参见RDS for MySQL 物理 ...

  10. C# DateTime Subtract

    DateTime start = DateTime.Now.AddDays(-20); DateTime end = DateTime.Now; TimeSpan ts = end.Subtract( ...