Java Web分页查询封装PageBean

本文介绍了Java Web开发中如何封装PageBean对象进行分页查询。PageBean包含5个属性:当前页、每页显示条数、总条数、总页数和查询数据集合。文章详细阐述了PageBean的注意事项,如参数默认值和边界条件处理,并提供了PageBean的代码实现。此外,还说明了web层和service层如何传递参数及处理分页查询业务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PageBean需要的属性

在web开发中, 由于前端的数据常常需要分页展示, 所以需要后端封装用于分页查询的PageBean对象. 前端只需要传入当前要查询第几页, 以及每页显示数据条数即可.

PageBean需要5个属性

(1).当前页 currentPage

(2).每页显示条数 pageCount

(3).总条数 totalCount

(4).总页数 totalPage

(5).查询的数据集合 list

 

PageBean其它注意的地方

(1).如果当前页 currentPage 传来的参数为空, 就默认查询第1页; 如果每页显示条数 pageCount 传来的参数为空, 那就默认每页5条数据.

(2).如果当前页 currentPage 传来的参数小于1, 则默认查询第1页; 如果 currentPage 大于总页数, 则默认查询最后一页.

(3).由于需要分页查询, 为了方便, 可以将limit的起始参数start提供出来, start = (当前页 - 1) * 每页条数.

(4).根据数据总条数 totalCount, 和每页显示条数 pageCount计算总页数, 下面是总页数计算的两种方式:

//方式1: 使用Math.ceil()天花板方法

// 获取总页数
this.totalPage = (int) Math.ceil(1.0 * this.totalCount / this.pageCount);



//方式2: 使用整除方法

//总条数+每页条数-1, 这样, 即使最后一页只有一条数据, 也会新开一页
this.totalPage = (this.totalCount + this.pageCount - 1) / this.pageSize;

PageBean代码

package com.tukrin.utils;

import java.util.List;

/**
 * PageBean封装
 * @author aisi
 *
 */
public class PageBean {

	/**
	 * 当前页
	 */
	private Integer currentPage;
	/**
	 * 每页显示条数
	 */
	private Integer pageCount;
	/**
	 * 总条数
	 */
	private Integer totalCount;
	/**
	 * 总页数
	 */
	private Integer totalPage;
	/**
	 * 分页查询的数据
	 */
	private List list;
	
	public PageBean(Integer currentPage, Integer pageCount, Integer totalCount) {
		this.currentPage = currentPage;
		this.pageCount = pageCount;
		this.totalCount = totalCount;
		
		// 如果没有指定当前查哪页, 则默认查第1页
		if(currentPage == null){
			this.currentPage = 1;
		}
		// 如果没有指定每页多少条数据, 则默认为5条
		if(pageCount == null){
			this.pageCount = 5;
		}
		// 获取总页数
		this.totalPage = (int) Math.ceil(1.0 * this.totalCount / this.pageCount);
		// 当前页不能小于1
		if(this.currentPage < 1){
			this.currentPage = 1;
		}
		// 当前页不能大于总页数
		if(this.currentPage > this.totalPage && this.totalPage != 0){
			this.currentPage = this.totalPage;
		}
	}
	
	/**
	 * 获取分页查询的起始参数
	 * @return
	 */
	public int getStart(){
		return (this.currentPage - 1) * this.pageCount;
	}
	
	public Integer getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}

	public Integer getPageCount() {
		return pageCount;
	}

	public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}

	public Integer getTotalCount() {
		return totalCount;
	}

	public void setTotalCount(Integer totalCount) {
		this.totalCount = totalCount;
	}

	public Integer getTotalPage() {
		return totalPage;
	}

	public void setTotalPage(Integer totalPage) {
		this.totalPage = totalPage;
	}

	public List getList() {
		return list;
	}

	public void setList(List list) {
		this.list = list;
	}
	
	
	
}

这样, 查询数据时, 不需要直接返回数据的集合, 而是返回PageBean对象, 数据的集合已经封装到pageBean对象了.

web层传参

web层只需要传当前页currentPage, 每页显示条数pageCount即可, 如果不传, 系统会默认查询第1页, 每页显示5条数据

service层业务

需要调用dao层, 查询数据总条数, 然后调用有参构造(currentPage当前页, pageCount每页条数, totalCount总条数)创建PageBean实例, 这样就可以获取分页查询的两个参数pageBean.getStart(), pageBean.getPageCount(), 分页查询获取数据的list集合, 传给PageBean, 最后返回PageBean对象.

@Override
	public PageBean getData(Long startTime, Long endTime, String deviceId, Integer currentPage, Integer pageCount) throws Exception {
		// 获取总条数
		Integer totalCount = faceCaptureDao.getTotalCount();
		PageBean pageBean = new PageBean(currentPage, pageCount, totalCount);
		List<FaceCapture> faceCaptureList = faceCaptureDao.findByTimeDesc(startTime, endTime, deviceId, pageBean.getStart(), pageBean.getPageCount());
		pageBean.setList(faceCaptureList);
		return pageBean;
	}

测试结果

返回的数据结构如下

{"currentPage":30,"list":[{},{},{},{},{}],"pageCount":5,"start":145,"totalCount":12345,"totalPage":2469}

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值