通用分页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默认相等 ...
随机推荐
- Docker 持久存储介绍(十三)
目录 一.Docker 数据存储 二.Bind mount 1.详细介绍 2.如何使用 -v or --volume 语法 --mount 语法 两者区别 3.使用场景 4.使用案例 存在目录 bin ...
- Vue双向数据绑定简易实现
一.vue中的双向数据绑定主要使用到了Object.defineProperty(新版的使用Proxy实现的)对Model层的数据进行getter和setter进行劫持,修改Model层数据的时候,在 ...
- easyui loadFilter 使用
$('#selectChannelForSignup_getBill').combobox({ url:'../channel/listAdvanceChannelPage', queryParams ...
- Python基础——matplotlib库的使用与绘图可视化
1.matplotlib库简介: Matplotlib 是一个 Python 的 2D绘图库,开发者可以便捷地生成绘图,直方图,功率谱,条形图,散点图等. 2.Matplotlib 库使用: 注:由于 ...
- Chrome 浏览器光标定位到地址栏
Windows: Ctrl + L 或 Alt + D Mac: Command + L Linux: Ctrl + L
- 《Mysql 一条 SQL 更新语句是如何执行的?(Redo log)》
一:更新流程 - 对于更新来说,也同样会根据 SQL 的执行流程进行. - - 连接器 - 连接数据库,具体的不做赘述. - 查询缓存 - 在一个表上有更新的时候,跟这个表有关的查询缓存会失效. - ...
- 《统计学习方法》极简笔记P4:朴素贝叶斯公式推导
<统计学习方法>极简笔记P4:朴素贝叶斯公式推导 朴素贝叶斯基本方法 通过训练数据集 T={(x_1,y_1),(x_2,y_2),(x_N,y_N)...,(x_1,y_1)} 学习联合 ...
- Django Simple Captcha的使用
Django Simple Captcha的使用 1.下载Django Simple Captcha django-simple-captcha官方文档地址 http://django-simple- ...
- zabbix硬件监控以及服务
大家好今天给大家带来zabbix3.4.8监控主机,那么最近由于我个人的关系.没有及时的更新文章所以,很抱歉那么今天我分享的内容是zabbix3.4.8监控服务器.本章的具体监控服务器如下: 服务器的 ...
- 1261: 单位转换(Java)
WUSTOJ 1261: 单位转换 参考资料 数字字符串拆分--百度知道 Description BobLee最近在复习考研,在复习计算机组成原理的时候,遇到了一个问题.就是在计算机存储里面的单位转换 ...