分页查询需要封装的PageBean

本文介绍了一个基于Java的分页查询实现方案,通过自定义PageBean类来封装分页信息,并展示了Action类、Service层和DAO层的具体实现细节。

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

  分页的PageBean

package com.itheima.crm.domain;

import java.util.List;

public class PageBean<T> {

	private Integer currPage;  //当前页数
	private Integer pageSize;  //每页显示的记录数
	private Integer totalCount;  //总记录数
	private Integer totalPage;  //总页数
	private List<T> list;		//每页查询到的数据的集合
	
	//get... set...
}

1、Action类

/**
	 * 分页查询客户的方法:findAll
	 */
	public String findAll(){
		//接收参数:分页参数
		//最好使用DetachedCriteria(自身带有分页查询)
		DetachedCriteria detachedCriteria=DetachedCriteria.forClass(Customer.class);
		//调用业务层查询:
		PageBean<Customer> pageBean=customerService.findByPage(detachedCriteria,currPage,pageSize);
		ActionContext.getContext().getValueStack().push(pageBean);
		return "findAll";
	}

2*  具体封装:service层

@Override
	//分页查询客户的方法
	public PageBean<Customer> findByPage(DetachedCriteria detachedCriteria, Integer currPage, Integer pageSize) {
		PageBean<Customer> pageBean=new PageBean();
		//分装当前页数
		pageBean.setCurrPage(currPage);
		//封装每页显示的页数
		pageBean.setPageSize(pageSize);
		//封装总记录数
		//调用dao
		Integer totalCount=customerDao.findCount(detachedCriteria);
		pageBean.setTotalCount(totalCount);
		//封装总页数:
		Double tc=totalCount.doubleValue();
		Double num=Math.ceil(tc/pageSize);//Math.ceil:向上取整
		pageBean.setTotalPage(num.intValue());
		//封装每页显示数据的集合
		Integer begin=(currPage-1)*pageSize;//计算从哪开始的
		List<Customer> list=customerDao.findByPage(detachedCriteria,begin,pageSize);
		pageBean.setList(list);
		return pageBean;
	}

3、dao层查询

	@Override
	//dao中带条件统计的个数
	public Integer findCount(DetachedCriteria detachedCriteria) {
		//select Count(*) from ... where ...
		 detachedCriteria.setProjection(Projections.rowCount());
		List<Long> list= (List<Long>) this.getHibernateTemplate().findByCriteria(detachedCriteria);
		if(list.size()>0){
			return list.get(0).intValue();
		}
		return null;
	}

	@Override
//分页查询客户的方法
	public List<Customer> findByPage(DetachedCriteria detachedCriteria, Integer begin, Integer pageSize) {
		detachedCriteria.setProjection(null);
		return (List<Customer>) this.getHibernateTemplate().findByCriteria(detachedCriteria,begin,pageSize);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值