Hibernate页面数据分页显示

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;

}

}


你可能感兴趣的:(Hibernate)