分页的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);
}