先写公用类PageBean泛型类
public class PageBean<T> {
//当前页
private Integer currentPage;
//总记录
private Integer totalCount;
//每页条数
private Integer pageSize;
//总页数
private Integer totalPage;
//开始位置
private Integer begin;
//list集合
private List<T> list;public void setCurrentPage(Integer currentPage) { this.currentPage = currentPage; } public Integer getTotalCount() { return totalCount; } public void setTotalCount(Integer totalCount) { this.totalCount = totalCount; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public Integer getTotalPage() { return totalPage; } public void setTotalPage(Integer totalPage) { this.totalPage = totalPage; } public Integer getBegin() { return begin; } public void setBegin(Integer begin) { this.begin = begin; } public List<T> getList() { return list; } public void setList(List<T> list) { this.list = list; } }
action方法中查询所有数据
private Integer currentPage; get/set方法 //分页方法 public String listpage(){ if(currentPage==null){ currentPage = 1; } PageBean<User> pageBean = userService.listpage(currentPage); //放到与对象里面 request.setAttribute("pageBean",pageBean); //放到与对象里面 request.setAttribute("pageBean",pageBean); return "listpage"; }
service中方法
//分页 public PageBean<User> listpage(Integer currentPage) { PageBean<User> pageBean = new PageBean<User>(); //当前页 pageBean.setCurrentPage(currentPage); //总记录数 调用一个方法findCount() int totalCount = userDao.findCount(); pageBean.setTotalCount(totalCount); //meiye 条数 int pageSize= 3; //总页数 int totalPage = 0; if(totalCount%pageSize==0){ totalPage = totalCount/pageSize; }else{ totalPage = totalCount/pageSize+1; } pageBean.setTotalPage(totalPage); //开始位置 int begin = (currentPage-1)*pageSize; //list集合 List<User> list = userDao.findAll(begin,pageSize); pageBean.setList(list); return pageBean; }
dao层中
//总条数
@SuppressWarnings("all")
public int findCount() {
List<Object> list =(List<Object>) getSession().createQuery("select count(*) from User").list();
if(list!=null && list.size()>0){
Object obj = list.get(0);
Long log= (Long)obj;
int count = log.intValue();
return count;
}
return 0;
}
//反回list集合分页查询
@SuppressWarnings("all")
public List<User> findAll(int begin, int pageSize) {
/*//第一种方式
//得到工厂
SessionFactory sessionFactory = this.getHibernateTemplate().getSessionFactory();
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from User");
query.setFirstResult(begin);
query.setMaxResults(pageSize);
List<User> list = query.list();*/
//第二种、使用离线对象和hibernateTemplate实现
//创建离线对象 设置对哪个实体类操作
DetachedCriteria criteria = DetachedCriteria.forClass(User.class);
//调用模板方法
List<User> list = (List<User>)this.getHibernateTemplate().findByCriteria(criteria,begin,pageSize);
return list;
}
jsp页面
<div class="header-info">
共<span class="info-number">[${pageBean .totalCount}]</span>条结果,
分成<span class="info-number">[${pageBean.totalPage}]</span>页显示,
当前第<span class="info-number">[${pageBean.currentPage}]</span>页.
<c:if test="${pageBean.currentPage ne 1}">
[<a href="${pageContext.request.contextPath }/user_listpage?currentPage=${pageBean.currentPage-1}">前一 页</a>]
</c:if>
<c:if test="${pageBean.currentPage ne pageBean.totalPage}">
[<a href="${pageContext.request.contextPath }/user_listpage?currentPage=${pageBean.currentPage+1}">后一页</a>]
</c:if></div>