`
yangzc106
  • 浏览: 156705 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分页PageUtils

J# 
阅读更多

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;
	}
}

 

分享到:
评论

相关推荐

    对分页进行了封装,PageUtil.java工具类

    在IT行业中,分页是一种常见的数据处理方式,特别是在大数据量的Web应用中,为了提高页面加载速度和用户体验,通常会采用分页展示数据。这里提到的"对分页进行了封装,PageUtil.java工具类"是一个Java实现的分页辅助...

    java分页工具类,以及基于Struts,Spring,mybatis,jsp中分页的调用及实现

    本文将详细介绍一个自定义的Java分页工具类`PageUtils`,并探讨其在Struts、Spring、MyBatis和JSP等框架和技术中的具体应用。 #### 二、分页工具类`PageUtils` `PageUtils`类是一个实现了`Serializable`接口的Java...

    Java实现简单的分页功能

    首先,我们需要一个分页对象`PageUtils`来存储分页的相关信息,如每页的记录数、当前页数、总记录数、总页数等。`PageUtils`类的定义如下: ```java public class PageUtils implements Serializable { private ...

    Java Web分页工具类

    PageUtils是一个Java工具类,用于简化分页逻辑的处理。它包含以下两个主要部分: 1. PageInfo 内部类:这是一个泛型类,封装了分页所需的信息,包括当前页码、页面大小、总页数、总记录数和当前页的记录列表。 2. ...

    PageUtils.java

    通过传入页码 返回三个值 上一页的值、当前页的值、下一页的值、页码,如果传入的值是0或null就返回第一页

    谈谈分页插件的配置与使用

    分页插件的配置与使用 在本文中,我们将讨论Mybatis Plus框架中的分页插件PageHelper的配置与使用。首先,我们需要在pom文件中引入Mybatis-plus的启动器依赖,然后在配置类中添加分页拦截器。最后,我们可以在DAO层...

    Java实现的分页工具类与用法示例

    1. 创建分页工具类对象:首先需要创建一个分页工具类对象,例如PageUtils2 pageUtils2 = new PageUtils2(); 2. 初始化分页工具类:在创建了分页工具类对象后,需要初始化该对象,例如pageUtils2.init(currentPage, ...

    基于jquery的分页插件

    在`pageUtils-master`这个压缩包中,可能包含的是一个名为`pageUtils`的分页插件源码,包括JavaScript文件、CSS样式和可能的示例HTML文件。通过查看和学习这些文件,你可以更深入地理解如何实现这样的功能,并将其...

    分页工具类

    PageUtils.java 分页工具类

    mybatis-plus分页传入参数后sql where条件没有limit分页信息操作

    但是奇怪的是,如果我不设置QueryWrapper参数,where后面的分页限制又是可以出来的。百思不得其解作者的想法。。。 具体看代码: @Override public PageUtils queryPage(Map&lt;String&gt; params) { IPage...

    简单实现jsp分页

    3. 分页辅助类(PageUtils):在JSP分页的实现中,创建一个辅助类是非常有帮助的。辅助类可以封装分页的常用逻辑,提供静态方法来创建分页对象。例如,辅助类PageUtil封装了创建分页信息对象的逻辑,它根据每页显示...

    Java后端实现分页效果

    首先,我们需要一个工具类来封装分页的相关信息,这就是`PageUtils`类。这个类包含了以下几个核心属性: 1. `pageIndex`:表示当前页码,通常从1开始计数。 2. `pageSize`:表示每页显示的数据数量。 3. `...

    Spring Data JPA 复杂/多条件组合分页查询

    在Spring Data JPA中,实现复杂或多条件组合的分页查询是一项常见的任务,这有助于高效地检索和展示大量数据。Spring Data JPA通过提供便捷的API使得开发者可以轻松地处理数据库查询,包括分页和排序。下面将详细...

    基于Spring Boot框架的OA管理系统dd13ea6c8bbdb1744ce2da12689c27d4.zip

    分页处理通过PageUtils工具类实现数据的分页显示,支持动态页码处理。 Excel报表生成通过ExcelUtils工具类生成Excel报表,支持自定义表头和内容。 错误处理 API响应处理通过BitResult类统一处理API调用的结果...

    基于Spring Boot框架的OA管理系统.zip

    分页处理通过PageUtils工具类实现数据的分页显示,支持动态页码处理。 Excel报表生成通过ExcelUtils工具类生成Excel报表,支持自定义表头和内容。 错误处理 API响应处理通过BitResult类统一处理API调用的结果...

    springboot-layui调用文件服务器接口实现文件上传下载.docx

    使用MyBatis的PageHelper插件进行分页查询,然后返回一个封装了分页信息的PageUtils对象,包含code(状态码)、count(总记录数)和data(文件列表)。 ```java PageUtils pageUtils = new PageUtils(); pageUtils....

    PageUtil.java

    实现部分分页的逻辑 输入参数:1、从前端获取的字符串型当前页;2、数据库拿到的数据总条数;3、自己设置一个每页显示的条数 返回:一个包装对象。其中的属性包含当前页、总页数、mysql数据查询的起始索引号、以及...

    JAVA项目必用工具类

    PageUtils可能提供了对数据库查询结果进行分页处理的方法,包括计算总页数、获取当前页数据等功能,通常与MyBatis或JPA等持久层框架结合使用。 3. **CorsFilter.java**:跨域过滤器。在开发RESTful API时,由于...

    448医药销售系统-程序2021.zip

    5. `PageUtils.class`:这是分页查询的工具类,通常用于在数据量较大时,帮助实现数据的分页展示,提高系统性能。 6. `AuthorizationInterceptor.class`:这是一个权限拦截器,负责在请求被实际处理之前进行权限...

    JavaEE+JDBC+Servlet+EL表达式的员工信息管理系统源码+数据库+项目说明(高分课设).zip

    使用PageUtils分页工具类 **2021/10/8 更新** 1. dao层和service层部分采用单例模式(懒汉式-不支持多线程) 2. service层部门采用工厂模式 ## 源码 [v1.0 - servlet-v1.0]...

Global site tag (gtag.js) - Google Analytics