通用分页model封装pageList
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的更多相关文章
- Spring Boot mybatis HashMap +layui 通用分页
背景: mybatis 常用数据查询的方法都是先建实体类,再建Mapper,最后写Service,如果只是单纯的去查询数据显示,这样操作太麻烦.本文就以mybatis +layui创建通用分页类,简化 ...
- 利用EF和C#泛型实现通用分页查询
利用EF和C#泛型实现通用分页查询 Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (ORM) 解决方案,是微软的ORM框架.此框架将数据库中的 ...
- asp.net MVC通用分页组件 使用方便 通用性强
asp.net MVC通用分页组件 使用方便 通用性强 该分页控件的显示逻辑: 1 当前页面反色突出显示,链接不可点击 2 第一页时首页链接不可点击 3 最后一页时尾页链接不可点击 4 当前页面左 ...
- PHP通用分页(Pager)类
三种不同展示方式 附上style~ 1. 效果图1 2.效果图2 3. 效果图3 4. 分页类主体 <?php /** * PHP通用分页类 * show(2) 1 ... 62 63 6 ...
- ReactJS实现的通用分页组件
大家多少都自己写过各种版本的分页工具条吧,像纯服务版的,纯jsWeb板的,Angular版的,因为这个基础得不能再基础的功能太多地方都会用到,下面我给出以个用ReactJS实现的版本,首先上图看下效果 ...
- SQL Server 2008 通用分页存储过程
1.alert USE [数据库名称] GO /****** Object: StoredProcedure [dbo].[dbTab_PagerHelper] Script Date: 08/22/ ...
- SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程(支持单表或多表结查集分页)
SQL Server利用RowNumber()内置函数与Over关键字实现通用分页存储过程,支持单表或多表结查集分页,存储过程如下: /******************/ --Author:梦在旅 ...
- 支持DISTINCT的通用分页存储过程(SQL2005)
/****** 对象: StoredProcedure [dbo].[P_CommonPagination] 脚本日期: 07/22/2009 10:22:01 ******/ SET ANSI_NU ...
- ibernate学习笔记5---实体类或属性名与数据库关键字冲突、hql命名参数、hql实现通用分页
一.实体类或属性名与数据库关键字冲突问题1.实体类名与数据库中的关键字冲突比如:实体表User与oracle中的系统表冲突解决方式1:在xml中添加table属性,指定表名,使其不与name默认相等 ...
随机推荐
- iOS-25个小技巧
(一)关于UITableView 方法flashScrollIndicators:这个很有用,闪一下滚动条,暗示是否有可滚动的内容.可以在ViewDidAppear或[table reload]之后 ...
- 【c# 学习笔记】c#中的类
1.什么是类: 在c#中类是一种数据结构,它可以包括数据成员.函数成员(方法.属性.事件.索引器.索引符.实例构造函数.静态构造函数和析构函数.及嵌套类型). 属性是,类中字段和方法的结合体,通过定义 ...
- Redcon:快速的Redis服务器Go实现
Fast Redis compatible server framework for Go Redcon is a custom Redis server framework for Go that ...
- 接着上次的python爬虫,今天进阶一哈,局部解析爬取网页数据
*解析网页数据的仓库 用Beatifulsoup基于lxml包lxml包基于html和xml的标记语言的解析包.可以去解析网页的内容,把我们想要的提取出来. 第一步.导入两个包,项目中必须包含beau ...
- 《Fluid Engine Development》 学习笔记4-预测校正不可压缩SPH-PCISPH
传统SPH方案的主要问题之一是时间步长限制.在原始的SPH中,我们首先从当前设置计算密度,使用EOS计算压强,应用压力梯度,然后运行时间积分.这个过程意味着只需要一定的压缩量就可以触发内核半径内的压力 ...
- conda安装的国内镜像配置,实现快速下载
conda安装的国内镜像配置,实现快速下载 anaconda的所有的软件包全部在国外,安装起来很麻烦,关键是下载速度慢,而且经常中断,所以需要配置国内安装的镜像,下载速度就很快了. 一.conda换国 ...
- 记录:larvel Windows 安装
先安装Composer 不多叙述了 链接: https://pan.baidu.com/s/1sljuImh 密码: qcj3 打开命令窗口 进入你的集成环境 网站根目录下 laravel程序会下载 ...
- CentOS使用yum安装jdk
1.查看系统版本命令 cat /etc/issue 2.查看yum包含的jdk版本 yum search java 或者 yum list java* 版本 jre jdk 1.8 java-1.8. ...
- windows使用sqlpus连接oracle 数据库
1.先安装好Instant Client程序. 2.打开cmd 执行sqlplus命令,如果出现如下图 2.说明需要把oracle install 的bin目类 添加系统环境path中,如下图添加环境 ...
- (十二)Sun公司的Jstl标签库详细介绍
JSP 本身提供的标签很少,不能满足我们日常开发需要,好在 Sun 公司自己提供了一套标签库: JSTL标签库快速入门(可点击) 目录 < c : out > 标签 < c : se ...