logo
 
 
|
|
|
|
|
|
|
|
 
 
您的位置:首页 - 专业知识
DisplayTag展示与Hibernate物理分页(连载3)
[2010-04-10]

接连载2,下面我们开始应用Hibernate core API封装BaseHibernateDao基类:代码如下:(有部分省略),在这个抽象类中主要封装Hibernate分页等代码,对于本应封装到此抽象类的其它进行持久化操作,与分页无关的方法都一并省略。在此基类中,应用到了我们在连载2中编写的PageUtil类,作为分页的封装组件,便于在Struts框架调用,并把结果在DisplayTag列表组件中使用。

package com.jc.book.dao;

import java.io.Serializable;
import java.util.List;

import com.jc.book.factory.HibernateSessionFactory;
import com.jc.book.util.PageUtil;

public abstract class BaseHibernateDao {
 private Session session=null;
 public void setSession(Session session){
  this.session=session;
 }
 protected Session getSession() {
     return HibernateSessionFactory.getSession(); 
    }
 
 protected void closeSession() {
  this.session=null;
  HibernateSessionFactory.closeSession();
 }

/**
  * Hibernate数据库分页
  * @param hql 查询hql语句
  * @param curPage 当前页数
  * @param pageSize 每页记录数
  * @return PageUtil分页组件
  */
public PageUtil listByHibernatePage(String hql, int curPage,int pageSize) {
  if (null==hql){
   return null;
  }
  Query query = this.getSession().createQuery(hql);
  //设置开始检索的起始记录
  query.setFirstResult((curPage-1)*pageSize);
  //设置每次检索返回的最大对象数
  query.setMaxResults(pageSize);
  List list = query.list();
  PageUtil pageUtil=new PageUtil();
  pageUtil.setList(list);

  String queryString = "";
  if (hql.toUpperCase().indexOf("SELECT") != -1) {
   int i = query.getQueryString().toUpperCase().indexOf("FROM");
   queryString = "Select count(*) " + hql.substring(i,hql.length());
  }
 else {
   queryString = "Select count(*) " + hql;
  }
  int  j = queryString.toUpperCase().lastIndexOf("ORDER");
  if (j!=-1){
   queryString = queryString.substring(0, j);
  }  
  Query cquery = this.getSession().createQuery(queryString);
  cquery.setCacheable(true);
  int recTotal = ((Integer)cquery.iterate().next()).intValue();  
  pageUtil.setTotal(recTotal);
  return pageUtil;
 }

上一篇:fopen和open有什么区别?
下一篇:理解QTP Action的分割
   
DisplayTag展示与Hibernate物理分页(连载2) DisplayTag展示与Hibernate物理分页(连载2)
DisplayTag展示与Hibernate物理分页(连载1) DisplayTag展示与Hibernate物理分页(连载1)
使用Hibernate进行大数据量的性能测试 使用Hibernate进行大数据量的性能测试
 

在线报名

  • 姓       名:*
  • 高考成绩:*
  • 电       话:*
  • 地       址:*
 
课程咨询
 

 
中博教育客服在线
 
©南京北大青鸟 隐私政策
学费咨询
学历咨询
专业咨询
订座试听
就业咨询
课程咨询
测试认证
软件认证