java代码实现查询分页

方法根据分页框架为例,需输入参数(当前页码,每页行数),返回:分页数据、 总行数、当前页、总页数。
注:当数据量过大时效率上不如SQL分页查询,建议在 查询出的数据条数较少时使用,因其原理是查询出所有所需数据后再根据分页需求进行代码分页。

1、分页实体类

import java.util.List;

public class Page<T> {
	private List<T> pages;		//数据	
	private long totalCount;	//总行数
	private int pageIndex;		//当前页
	private int totalPages;		//总页数
	
	public List<T> getPages() {
		return pages;
	}
	public void setPages(List<T> pages) {
		this.pages = pages;
	}
	public long getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(long totalCount) {
		this.totalCount = totalCount;
	}
	public int getPageIndex() {
		return pageIndex;
	}
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}
	public int getTotalPages() {
		return totalPages;
	}
	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
}

2、分页方法

	/**
	 * <p>分页方法</p>
	 * <p>参数(当前页码,每页行数)</p>
	 * <p>返回	pages 数据</p>
	 * <p>		totalCount	总数</p>
	 * <p>		pageIndex	当前页</p>
	 * <p>		totalPages	总页数</p>
 	*/
	public Page<User> pages(int pageIndex,int hang) {
		List<User> users = userDao.findAll();		//获取所需数据
		
		int fist = pageIndex*hang-hang;	//获取当前页的第一行下标
		int last = pageIndex*hang;		//获取当前页的最后一行下标+1
		if(last>users.size())	last=users.size();
		
		List<User> user= new ArrayList<>();
		for(int s=fist;s<last;s++){
			user.add(users.get(s));
		}
		
		Page<User> page = new Page<User>();
		page.setTotalCount(users.size());	//总行数
		page.setPageIndex(pageIndex);		//当前页
		page.setTotalPages((int)Math.ceil((float)users.size()/hang));	//总页数
		page.setPages(user);		//分页数据
		
		return page;
	}

3、超级二合一:访问时只需调用有参构造方法;

List<User> users = userDao.findAll();		//获取所需数据
Page<User> pages = new Page(pageIndex,hang,users);

实体类:

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

public class Page<T> {
	private List<T> pages;	//数据	
	private long totalCount;	//总数
	private int pageIndex;	//当前页
	private int totalPages;	//总页数
	
	public List<T> getPages() {
		return pages;
	}
	public void setPages(List<T> pages) {
		this.pages = pages;
	}
	public long getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(long totalCount) {
		this.totalCount = totalCount;
	}
	public int getPageIndex() {
		return pageIndex;
	}
	public void setPageIndex(int pageIndex) {
		this.pageIndex = pageIndex;
	}
	public int getTotalPages() {
		return totalPages;
	}
	public void setTotalPages(int totalPages) {
		this.totalPages = totalPages;
	}
	
	
	/**
	 * <p>分页方法</p>
	 * <p>参数(当前页码,每页行数)</p>
	 * <p>返回	pages 数据</p>
	 * <p>		totalCount	总数</p>
	 * <p>		pageIndex	当前页</p>
	 * <p>		totalPages	总页数</p>
 	*/
	public Page(int pageIndex,int hang,List<T> pages){
		
		int fist = pageIndex*hang-hang;	//获取当前页的第一行下标
		int last = pageIndex*hang;		//获取当前页的最后一行下标+1
		if(last>pages.size())	last=pages.size();
		
		List<T> page= new ArrayList<T>();
		for(int s=fist;s<last;s++){
			page.add(pages.get(s));
		}
		
		this.pages = page;		//分页数据
		this.totalCount = pages.size();	//总行数
		this.pageIndex = pageIndex;		//当前页
		this.totalPages = (int)Math.ceil((float)pages.size()/hang);	//总页数
	}

}
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值