package com.huike.hidp.util;
?
import java.util.List;
?
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
?* 页面数据分页显示
?* @author
?
?* @date 2009-5
?*/
public class PaginationHibernateDaoSupport extends HibernateDaoSupport {
?
/**
* 使用hql语句进行分页查询
* @param hql 需要查询的hql语句
* @param offset 第一条记录索引
?
* @param pageSize 每页需要显示的记录条数
* @return 当前页的所有记录
?
*/
public List findByPage(final String hql,final int offset,final int pageSize){
//通过一个HibernateCallback 对象来执行查询
?
List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
//实现hibernateCallback接口必须实现的方法
?
public Object doInHibernate(Session session) throws HibernateException{
//执行hibernate 分页查询
List result = session.createQuery(hql)
? ? ? ? ? ? ? ? ? ? .setFirstResult(offset)
? ? ? ? ? ? ? ? ? ? .setMaxResults(pageSize)
? ? ? ? ? ? ? ? ? ? .list();
return result;
}
}
);
return list;
}
/**
* 使用hql语句进行分页查询
* @param hql 需要查询的hql语句
* @param value 如果hql 有一个参数需要传入,value就是传入Hql语句的参数
?
* @param offset 第一条记录索引
?
* @param pageSize 每页需要显示的记录条数
* @return 当前页的所有记录
?
*/
public List findByPage(final String hql,final Object value,
? ? ? ? ? ? ? final int offset,final int pageSize){
//通过一个HibernateCallback 对象来执行查询
?
List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
//实现hibernateCallback接口必须实现的方法
?
public Object doInHibernate(Session session) throws HibernateException{
//执行hibernate 分页查询
List result = session.createQuery(hql)
? ? ? ? ? ? ? ? ? ? .setParameter(0, value)
? ? ? ? ? ? ? ? ? ? .setFirstResult(offset)
? ? ? ? ? ? ? ? ? ? .setMaxResults(pageSize)
? ? ? ? ? ? ? ? ? ? .list();
return result;
}
}
);
return list;
}
/**
* 使用hql语句进行分页查询
* @param hql 需要查询的hql语句
* @param values 如果Hql有多个参数需要传入,values 就是传入hql的参数组?
* @param offset 第一条记录索引
?
* @param pageSize 每页需要显示的记录条数
* @return 当前页的所有记录
?
*/
public List findByPage(final String hql,final Object[] values,
? ? ? ? ? ? ? final int offset,final int pageSize){
//通过一个HibernateCallback 对象来执行查询
?
List list = getHibernateTemplate().executeFind(new HibernateCallback()
{
//实现hibernateCallback接口必须实现的方法
?
public Object doInHibernate(Session session) throws HibernateException{
//执行hibernate 分页查询
Query query = session.createQuery(hql);
//为hql语句传入参数
for(int i=0; i < values.length; i++){
query.setParameter(i, values[i]);
}
List result = ? query.setFirstResult(offset)
? ? ? ? ? ? ? ? ? ? .setMaxResults(pageSize)
? ? ? ? ? ? ? ? ? ? .list();
return result;
}
}
);
return list;
}
}