自己写了个类封装分页

分页常用,自己写了个分页的类,用来处理分页的功能,做个记录,具体如下:

/**
 * 分页的工具类
 * @author cjd
 *
 */
public class PageUtil {

	private int total; // 总记录数
	private int pageSize = 10; // 每页记录数
	private int totalPage = -1; // 总页码
	private int pageNo = 1 ; // 当前页码
	private List<?> rows;

	public PageUtil() {
	}
	
	public PageUtil(int pageSize,int pageNo){
		this.pageSize = pageSize;
		this.pageNo = pageNo;
	}
	
	public void setPage(int pageSize,int pageNo){
		this.pageSize = pageSize;
		this.pageNo = pageNo;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}

	public int getTotalPage() {
		if(totalPage<0)
			return (total + pageSize - 1) / pageSize;
		return totalPage;
	}

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

	public int getPageNo() {
		return pageNo;
	}

	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}

	public List<?> getRows() {
		return rows;
	}

	public void setRows(List<?> rows) {
		this.rows = rows;
	}

	/**
	* 得到上一页
	*/
	public int getPreviousPageNo() {
		if (pageNo <= 1)
			return 1;
		else
			return (pageNo - 1);
	}
	/**
	* 得到下一页
	*/
	public int getNextPageNo() {
		if (pageNo >= getTotalPage()) {
			return getTotalPage() == 0 ? 1 : getTotalPage();
		} else {
			return pageNo + 1;
		}
	}
	
	
	//页面分页导航的链接 方式3
	public int[] getPageToolBar3() {
		return getPageToolBar(3);
	} 
	//页面分页导航的链接 方式5
	public int[] getPageToolBar5() {
		return getPageToolBar(5);
	} 
	//页面分页导航的链接 方式7
	public int[] getPageToolBar7() {
		return getPageToolBar(7);
	} 
	//页面分页导航的链接 方式9
	public int[] getPageToolBar9() {
		return getPageToolBar(9);
	} 
	//页面分页导航的链接 方式10
	public int[] getPageToolBar10() {
		return getPageToolBar(10);
	} 
	//页面分页导航的链接 方式9
	public int[] getPageToolBar11() {
		return getPageToolBar(11);
	} 
	//页面分页导航的链接 方式9
	public int[] getPageToolBar12() {
		return getPageToolBar(12);
	} 
	//页面分页导航的链接 方式9
	public int[] getPageToolBar13() {
		return getPageToolBar(13);
	} 
	
	
	//显示页码  1,2,3,4,5    n为显示的个数
	public int[] getPageToolBar(int n) {
		int totalPage = getTotalPage();
		int[] result = new int[n];
		if(totalPage<=n || pageNo<=n/2+1){
			for(int i=0;i<n;i++){
				result[i] = i+1;
			}
			return result;
		}else if(pageNo>totalPage-n/2-1){
			for(int i=0;i<n;i++){
				result[i] = totalPage-n+i+1;
			}
			return result;
		}else{
			for(int i=0;i<n;i++){
				result[i] = pageNo-2+i;
			}
			return result;
		}
	} 

}


在Service中的使用方法(HqlHelper是用来封装hql生成的类):

@Transactional
public PageUtil listByHqlHelper(HqlHelper hqlHelper,PageUtil pageUtil){
	List rows = entityDao.listHql(hqlHelper.getHQL(), hqlHelper.getPatams(),pageUtil.getPageNo(),pageUtil.getPageSize());
	long total = (long)entityDao.uniqueResultHql(hqlHelper.getCountHQL(), hqlHelper.getPatams());
	pageUtil.setRows(rows);
	pageUtil.setTotal((int)total);
	return pageUtil;
}


在controller中的使用方法:

/**
 * 节目的id获取所属的视频列表
 */
@RequestMapping(value="/jk_songList.do")
private Object jk_songList(HttpServletRequest request, HttpServletResponse response,Integer programId,Integer rows,Integer page) throws Exception{	
	PageUtil pageUtil = programService.listSongBeanByProgramId(programId, rows, page);
	JSONObject json = JSONObject.fromObject(pageUtil);
	response.getWriter().write(json.toString());
	return null;
}

然后在前台的使用:

页码:${pb.pageNo }/${pb.totalPages}
上一页:pageNo=${pb.previousPageNo}
下一页:pageNo=${pb.nextPageNo}
分页数据:<c:forEach var="item" items="${pb.list}" varStatus="vs">...



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值