天天看点

Hibernate页面数据分页显示

package com.huike.hidp.util;

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;

 * @param value 如果hql 有一个参数需要传入,value就是传入hql语句的参数

public list findbypage(final string hql,final object value,

               final int offset,final int pagesize){

                     .setparameter(0, value)

 * @param values 如果hql有多个参数需要传入,values 就是传入hql的参数组 

public list findbypage(final string hql,final object[] values,

query query = session.createquery(hql);

//为hql语句传入参数

for(int i=0; i < values.length; i++){

query.setparameter(i, values[i]);

list result =   query.setfirstresult(offset)