当前位置: 代码迷 >> Web前端 >> Hibernate页面数据分页展示
  详细解决方案

Hibernate页面数据分页展示

热度:615   发布时间:2012-09-08 10:48:07.0
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;

}

}


  相关解决方案