PageUtils.java 自己写的分页。记录一下。
package com.targ.knowledge.utils;
import java.util.ArrayList;
import java.util.List;
/**
* 分页通用类
*
* 使用方法
* 1.设置当前页
* 2.设置总记录数 setTotalRows
* 3.设置数据,激发分页处理方法
*
* 注:以上步骤按顺序进行。切记、切记
* @author yangzc
*
*/
public class PageUtils implements java.io.Serializable{
/**
*
*/
private static final long serialVersionUID = 7822326584568796627L;
private int currentPage=1;//当前页
private int totalPages=0;//总页数
private boolean hasNextPage=false;//没有下一页
private boolean hasPreviousPage=false;//没有上一页
private int pageStartRow=0;//每页的起始行
private int pageEndRow=0;//每页显示的终止数
private int pageStartPage = 1;//页面显示开始页数
private int pageEndPage = 1;//页面显示终止页数
private int showPages=21;//分页要显示的页数
private int pageRecorders=4;//每页记录
private int totalRows=0;//总行数
private List<?> list;//传过一个list,就可以对list进行分页
private float time = 0.00f;
public PageUtils(){}
//初始化当前页
public PageUtils(int currentPage){
this.currentPage = currentPage;
}
public void clone(PageUtils pages){
this.currentPage = pages.getCurrentPage();
this.totalPages = pages.getTotalPages();
this.hasNextPage = pages.isHasNextPage();
this.hasPreviousPage = pages.isHasPreviousPage();
this.pageStartPage = pages.getPageStartPage();
this.pageEndPage = pages.getPageEndPage();
this.totalRows = pages.getTotalRows();
this.list = pages.getList();
this.time = pages.getTime();
}
/**
* 设定检索到的总记录数
* @param totalRows
*/
public void setTotalRows(int totalRows){
this.totalRows = totalRows;
setData();
}
public static void main(String[] args) {
int recordSize = 189;
PageUtils page = new PageUtils(1);
page.setTotalRows(recordSize);
// page.setData(null);;
int totalPage = page.getTotalPages();
// System.out.println("数据范围为:("+page.getPageStartRow() + "," + page.getPageEndRow() + ")");
// System.out.print("当前页:"+page.getCurrentPage() +" ");
int startPage = page.getPageStartPage();
int endPage = page.getPageEndPage();
// for(int j=startPage; j<=endPage; j++){
// System.out.print(j + ",");
// }
// System.out.print(" 总页数为:"+page.getTotalPages());
// System.out.println();
// System.out.println("------------------------------------------");
for(int i=1;i<= totalPage; i++){
page = new PageUtils(i);
page.setTotalRows(recordSize);
// page.setData(null);
System.out.println("数据范围为:("+page.getPageStartRow() + "," + page.getPageEndRow() + ")");
System.out.print("当前页:"+page.getCurrentPage() +" ");
startPage = page.getPageStartPage();
endPage = page.getPageEndPage();
for(int j=startPage; j<=endPage; j++){
if(page.getCurrentPage() != j)
System.out.print(j + ",");
else
System.out.print("<" + j + ">,");
}
System.out.print(" 总页数为:"+page.getTotalPages());
System.out.println();
System.out.println("------------------------------------------");
}
}
public List<String> getPageLst(){
List<String> pagelst = new ArrayList<String>();
for(int i=pageStartPage; i<= pageEndPage; i++){
pagelst.add(i+"");
}
return pagelst;
}
/**
* 设定记录
*/
public void setData(){
//设定总页数
if(totalRows%pageRecorders == 0){
totalPages = totalRows/pageRecorders;
}else{
totalPages = totalRows/pageRecorders + 1;
}
//设置是否有下一页
if((currentPage+1) > totalPages){
hasNextPage = false;
}else{
hasNextPage = true;
}
//设置是否有上一页
if((currentPage -1) > 0){
hasPreviousPage = true;
}else{
hasPreviousPage = false;
}
//设置每页的起始行
if(hasPreviousPage){
pageStartRow = (currentPage - 1)*pageRecorders + 1;
}else{
pageStartRow = 1;
}
//设定每页的终止行
if(hasNextPage){
pageEndRow = currentPage* pageRecorders;
}else{
pageEndRow = totalRows;
}
//页面显示开始页数
if(currentPage <= showPages/2){
pageStartPage = 1;
}else{
pageStartPage = currentPage - showPages/2;
if(showPages%2 ==0){
pageStartPage = pageStartPage + 1;
}
if(pageStartPage + showPages > totalPages){
pageStartPage = totalPages - showPages + 1;
if(pageStartPage <= 0){
pageStartPage = 1;
}
}
}
//页面显示终止页数
if(currentPage + showPages/2 >= totalPages){
pageEndPage = totalPages;
}else{
pageEndPage = currentPage + showPages/2;
if(pageEndPage - showPages < 0){
pageEndPage = showPages;
if(showPages > totalPages){
pageEndPage = totalPages;
}
}
}
}
/**
* 当前页开始行
* @return
*/
public int getPageStartRow(){
return pageStartRow;
}
/**
* 当前页结束行
* @return
*/
public int getPageEndRow(){
return pageEndRow;
}
/**
* 是否有前一页
* @return
*/
public boolean isHasNextPage() {
return hasNextPage;
}
/**
* 是否有后一页
* @return
*/
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
/**
* 总页数
* @return
*/
public int getTotalPages(){
return totalPages;
}
/**
* 当前页
* @return
*/
public int getCurrentPage(){
return currentPage;
}
/**
* 当前页显示开始页链接
* @return
*/
public int getPageStartPage() {
return pageStartPage;
}
/**
* 当前页显示终止页链接
* @return
*/
public int getPageEndPage() {
return pageEndPage;
}
/**
* 数据列表
* @return
*/
public List<?> getList() {
return list;
}
/**
*
* @param list
*/
public void setList(List<?> list) {
this.list = list;
}
public int getTotalRows() {
return totalRows;
}
public float getTime() {
return time;
}
public void setTime(float time) {
this.time = time;
}
}
分享到:
相关推荐
在IT行业中,分页是一种常见的数据处理方式,特别是在大数据量的Web应用中,为了提高页面加载速度和用户体验,通常会采用分页展示数据。这里提到的"对分页进行了封装,PageUtil.java工具类"是一个Java实现的分页辅助...
本文将详细介绍一个自定义的Java分页工具类`PageUtils`,并探讨其在Struts、Spring、MyBatis和JSP等框架和技术中的具体应用。 #### 二、分页工具类`PageUtils` `PageUtils`类是一个实现了`Serializable`接口的Java...
首先,我们需要一个分页对象`PageUtils`来存储分页的相关信息,如每页的记录数、当前页数、总记录数、总页数等。`PageUtils`类的定义如下: ```java public class PageUtils implements Serializable { private ...
PageUtils是一个Java工具类,用于简化分页逻辑的处理。它包含以下两个主要部分: 1. PageInfo 内部类:这是一个泛型类,封装了分页所需的信息,包括当前页码、页面大小、总页数、总记录数和当前页的记录列表。 2. ...
通过传入页码 返回三个值 上一页的值、当前页的值、下一页的值、页码,如果传入的值是0或null就返回第一页
分页插件的配置与使用 在本文中,我们将讨论Mybatis Plus框架中的分页插件PageHelper的配置与使用。首先,我们需要在pom文件中引入Mybatis-plus的启动器依赖,然后在配置类中添加分页拦截器。最后,我们可以在DAO层...
1. 创建分页工具类对象:首先需要创建一个分页工具类对象,例如PageUtils2 pageUtils2 = new PageUtils2(); 2. 初始化分页工具类:在创建了分页工具类对象后,需要初始化该对象,例如pageUtils2.init(currentPage, ...
在`pageUtils-master`这个压缩包中,可能包含的是一个名为`pageUtils`的分页插件源码,包括JavaScript文件、CSS样式和可能的示例HTML文件。通过查看和学习这些文件,你可以更深入地理解如何实现这样的功能,并将其...
PageUtils.java 分页工具类
但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的。百思不得其解作者的想法。。。 具体看代码: @Override public PageUtils queryPage(Map<String> params) { IPage...
3. 分页辅助类(PageUtils):在JSP分页的实现中,创建一个辅助类是非常有帮助的。辅助类可以封装分页的常用逻辑,提供静态方法来创建分页对象。例如,辅助类PageUtil封装了创建分页信息对象的逻辑,它根据每页显示...
首先,我们需要一个工具类来封装分页的相关信息,这就是`PageUtils`类。这个类包含了以下几个核心属性: 1. `pageIndex`:表示当前页码,通常从1开始计数。 2. `pageSize`:表示每页显示的数据数量。 3. `...
在Spring Data JPA中,实现复杂或多条件组合的分页查询是一项常见的任务,这有助于高效地检索和展示大量数据。Spring Data JPA通过提供便捷的API使得开发者可以轻松地处理数据库查询,包括分页和排序。下面将详细...
分页处理通过PageUtils工具类实现数据的分页显示,支持动态页码处理。 Excel报表生成通过ExcelUtils工具类生成Excel报表,支持自定义表头和内容。 错误处理 API响应处理通过BitResult类统一处理API调用的结果...
分页处理通过PageUtils工具类实现数据的分页显示,支持动态页码处理。 Excel报表生成通过ExcelUtils工具类生成Excel报表,支持自定义表头和内容。 错误处理 API响应处理通过BitResult类统一处理API调用的结果...
使用MyBatis的PageHelper插件进行分页查询,然后返回一个封装了分页信息的PageUtils对象,包含code(状态码)、count(总记录数)和data(文件列表)。 ```java PageUtils pageUtils = new PageUtils(); pageUtils....
实现部分分页的逻辑 输入参数:1、从前端获取的字符串型当前页;2、数据库拿到的数据总条数;3、自己设置一个每页显示的条数 返回:一个包装对象。其中的属性包含当前页、总页数、mysql数据查询的起始索引号、以及...
PageUtils可能提供了对数据库查询结果进行分页处理的方法,包括计算总页数、获取当前页数据等功能,通常与MyBatis或JPA等持久层框架结合使用。 3. **CorsFilter.java**:跨域过滤器。在开发RESTful API时,由于...
5. `PageUtils.class`:这是分页查询的工具类,通常用于在数据量较大时,帮助实现数据的分页展示,提高系统性能。 6. `AuthorizationInterceptor.class`:这是一个权限拦截器,负责在请求被实际处理之前进行权限...
使用PageUtils分页工具类 **2021/10/8 更新** 1. dao层和service层部分采用单例模式(懒汉式-不支持多线程) 2. service层部门采用工厂模式 ## 源码 [v1.0 - servlet-v1.0]...