分页

本文介绍了一种分页查询的封装设计,通过PageQueryWrapper和PageContentWrapper类实现了高效的数据分页处理。这两个类分别负责分页参数的封装和分页结果的处理,支持批量查询和下一页判断。

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

/**
 * 
 */
package com.zte.claa.infiboss.app.action.apienablev2;

import java.util.List;

import com.zte.claa.infiboss.app.action.apienablev2.page.PageResp;

/**
 * 分页查询封装查询
 * @author 
 *
 */
public class PageQueryWrapper<T> {

	private List<T> data;
	
	private int page;
	
	private int batch;
	
	public PageQueryWrapper(int page, int batch) {
		this.page = page;
		this.batch = batch;
	}
	
	public int getStart(){
		return page < 1 ? 0 : (page-1) * batch;
	}
	//每次请求,多查一条记录,便于计算是否
	public int getBatch(){
		return batch + 1;
	}
	
	public boolean hasNextPage(){
		if (data == null || data.size() <= batch){
			return false;
		}
		return true;
	}
	
	public void setResult(List<T> data){
		this.data = data;
	}
	
	public List<T> getData(){
		return hasNextPage()?data.subList(0, batch): data;
	}
	
	public PageResp toPageResp(){
		PageResp resp = new PageResp();
		resp.setBatch(batch);
		resp.setPage(page);
		resp.setHasnext(hasNextPage());
		return resp;
	}
}
/**
 * 
 */
package com.zte.claa.infiboss.app.action.apienablev2;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 
 *
 */
public class PageContentWrapper<T> {

	private List<T> data;
	
	private int page;
	
	private int batch;
	
	private boolean hasNext;
	
	public PageContentWrapper(List<T> data, int page, int batch){
		this.data = data;
		this.page = page;
		this.batch = batch;
		
		hasNext = data.size() > page * batch;
	}
	
	public List<T> getData(){
		int start = (page-1) * batch;
		if (start > data.size()){
			return new ArrayList<>(0);
		}
		int end = page * batch;
		return data.subList(start, Math.min(end, data.size()));
	}
	
	public boolean hasNext(){
		return this.hasNext;
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值