Hibernate分页

原创 2007年09月12日 01:46:00

DAO类

package com.coolpep.order.dao;

import java.util.List;

public interface PaginationDAO {
 
 public int getCount(String cond) throws Exception;
 
 public int getPage(String cond) throws Exception;
 
 public List getPage(String cond, int page, int cont) throws Exception;

}

DAPImpl类

package com.coolpep.order.impl;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import com.coolpep.order.dao.PaginationDAO;
import com.coolpep.order.factory.DAOFactory;

public class PaginationDAOImpl implements PaginationDAO {
 
 private Session session = null;
 private int totalPage;   //总页数
 private int totalCount;  //总行数
 private int pageSize = 5;   //页面显示条数
 private int currentPage; //当前页码

 public PaginationDAOImpl() {
  // TODO Auto-generated constructor stub
  this.session = new Configuration().configure().buildSessionFactory().openSession();
 }
 
 
 /**
  * 汇总数据获取数据总行数
  *
  * */
 public int getCount(String cond) throws Exception{
  int totalCount = 0;

  try {
   Transaction tran = this.session.beginTransaction();
   Query q = this.session.createQuery("select count(*) from Orders where osource=?");
   q.setString(0, cond);
   List list = q.list();
   totalCount = ((Integer) list.get(0)).intValue();
   tran.commit();
   this.session.close();
  } catch (Exception e) {
   e.printStackTrace();
  }
  
  return totalCount;
 }
 
 /**
  * 汇总数据获取数据总页数
  *
  * */
 public int getPage(String cond) throws Exception{
  
  try{
   Transaction tran = this.session.beginTransaction();
   DAOFactory dao = new DAOFactory();
   totalCount = dao.getPaginationDAOInstance().getCount(cond);
   if(totalCount%pageSize>0)
    totalPage = totalCount/pageSize + 1;
   if(totalCount%pageSize==0)
    totalPage = totalCount/pageSize;
   if(totalCount%pageSize<0)
    totalPage = totalCount/pageSize;
   tran.commit();
   this.session.close();
  } catch (Exception e){
   e.printStackTrace();
  }
  return totalPage;
 }
 
 /**
  * 根据条件分页
  *
  * @param cond  查找条件
  * @param page  当前页数
  * @param count
  * */
 public List getPage(String cond, int currentPage, int pageSize){
  List list = null;
  String hql = "from Orders where osource=?";
  Query q = this.session.createQuery(hql);
  q.setString(0, cond);
  q.setFirstResult(pageSize*(currentPage-1));
  q.setMaxResults(pageSize);
  list = q.list();
  return list;
  
 }
 

}
 

相关文章推荐

java分页 (spring+springmvc+hibernate)

分页方式: 1.直接从数据库分页:                                             2.先全部查询,用 List.subList( firstResult,ma...

Struts+Hibernate实现分页

  • 2015年05月12日 21:24
  • 32KB
  • 下载

hibernate实现分页

  • 2007年05月24日 17:45
  • 5.1MB
  • 下载

Hibernate的查询 标准(Criteria)查询 分页、单个记录、排序

分页:其实标准查询的分页很简单,在Criteria中提供了两个方法,setFirstResult方法和setMaxResults,一个是数据的开始位置0表示第一条记录,一个是返回的记录数。 Java代...

hibernate+Struts+sql2000实现分页

  • 2007年12月25日 10:22
  • 6.06MB
  • 下载

Struts+Hibernate分页

  • 2008年01月04日 12:20
  • 8.85MB
  • 下载

Hibernate Criteria查询之多表连接分页-1

最近尝试用Hibernate的Criteria查询实现多表连接下的分页,发现一些Hibernate的奇怪问题:多表连接后的分页求总条数始终报错,检查生成的sql也不正确。研究许久找到问题所在,特贴如下...

Hibernate如何实践union,order by,分页功能共存

hibernate的  HQL是不支持union语句的。所以,我们只能使用原生态SQL语句来做~ [java] view plain copy    问题是,不但要查出语句,还要封装成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate分页
举报原因:
原因补充:

(最多只允许输入30个字)