Spring3+hibernate3 分頁

package com.lbx.chat.paging;

import java.sql.SQLException;
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.HibernateTemplate;

/**
 * 基於hibernateTemplate的三個分頁控制方法
 * @author Administrator
 *
 */

public class PageDaoHibernate {
	
	private HibernateTemplate hibernateTemplate;
	
	/**
	 * 使用HQL語句進行分頁查詢操作
	 * offset 第一條記錄的索引
	 * pageSize 每頁需要顯示的記錄數
	 * @return 當前頁的所有記錄
	 */
	public List findByPage(final String hql, final int offset, final int pageSize){
		List list = hibernateTemplate.executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				List result = session.createQuery(hql).setFirstResult(offset)
								.setMaxResults(pageSize)
								.list();
				return result;
			}
		});
		return list;
	}
	
	/**
	 * 使用HQL語句進行分頁查詢操作
	 * value 如果HQL有一個參數需要傳人,則value就是傳人的參數
	 * offset 第一條記錄的索引
	 * pageSize 每頁需要顯示的記錄數
	 * @return 當前頁的所有記錄
	 */
	public List findByPage(final String hql, final Object value,  final int offset, final int pageSize){
//System.out.println("PageDaoHibernate.findByPage()");
		List list = hibernateTemplate.executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				List result = session.createQuery(hql).setFirstResult(offset)
								.setParameter(0, value)
								.setMaxResults(pageSize)
								.list();
				return result;
			}
		});
		return list;
	}
	
	/**
	 * 使用HQL語句進行分頁查詢操作
	 * values 如果HQL有多個參數需要傳人,則values就是傳人的參數數組
	 * offset 第一條記錄的索引
	 * pageSize 每頁需要顯示的記錄數
	 * @return 當前頁的所有記錄
	 */
	public List findByPage(final String hql, final Object[] values,  final int offset, final int pageSize){
		List list = hibernateTemplate.executeFind(new HibernateCallback() {
			
			public Object doInHibernate(Session session) throws HibernateException,
					SQLException {
				Query query = session.createQuery(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;
	}

	public HibernateTemplate getHibernateTemplate() {
		return hibernateTemplate;
	}

	public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
		this.hibernateTemplate = hibernateTemplate;
	}
	
}


文章轉自:http://550516671-qq-com.iteye.com/blog/832446

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章