----------------------------------------------------------------------------------------------------------------------------------------------------------

 泡牛吧!

                                       希望越来越多的光棍能够泡到牛

-----------------------------------------------------------------------------------------------------------------------------------------------------------

AbstractService.java

package ccp.stock.service.base;


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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import ccp.stock.util.PaginationSupport;

/**
 * @author haohao
 * @since 2007-2-12 对spring HibernateDaoSupport继承
 */
public class AbstractService extends HibernateDaoSupport {

 private static final Log log = LogFactory.getLog(AbstractService.class);

 /**
  * 默认cache 为false
  */
 private boolean cacheQueries = false;

 private String queryCacheRegion;
 /**
  * 初始化 Dao
  * @see org.springframework.dao.support.DaoSupport#initDao()
  */
 @Override
 protected void initDao() throws Exception {
  super.initDao();
  getHibernateTemplate().setCacheQueries(cacheQueries);
  if (queryCacheRegion != null) {
   getHibernateTemplate().setQueryCacheRegion(queryCacheRegion);
  }
 }
 /**
  * @param cacheQueries
  * AbstractService.java ccp.stock.service.base 下午02:51:23
  */
 public void setCacheQueries(final boolean cacheQueries) {
  this.cacheQueries = cacheQueries;
 }
 /**
  * @param queryCacheRegion
  * AbstractService.java ccp.stock.service.base 下午02:53:14
  */
 public void setQueryCacheRegion(final String queryCacheRegion) {
  this.queryCacheRegion = queryCacheRegion;
 }
 /**
  * 保存一个class
  * @param entity
  * @return boolean AbstractService.java ccp.stock.service.base 下午02:52:38
  */
 public boolean create(final Object entity) {
  try {
   this.getHibernateTemplate().save(entity);
   return true;
  } catch (final RuntimeException re) {
   AbstractService.log.error("create failed", re);
   throw re;
  }
 }
 /**
  * 更新一个class
  * @param entity
  * @return boolean AbstractService.java ccp.stock.service.base 下午02:53:55
  */
 public boolean update(final Object entity) {

  try {
   getHibernateTemplate().update(entity);
   return true;
  } catch (final RuntimeException re) {
   AbstractService.log.error("update failed", re);
   throw re;
  }
 }
 /**
  * 删除一个class
  *
  * @param entity
  * @return boolean AbstractService.java ccp.stock.service.base 下午02:54:33
  */
 public boolean remove(final Object entity) {
  try {
   getHibernateTemplate().delete(entity);
   return true;
  } catch (final RuntimeException re) {
   AbstractService.log.error("delete failed", re);
   throw re;
  }
 }
 /**
  * load class
  *
  * @param entity
  * @param id
  * @return Object AbstractService.java ccp.stock.service.base 下午02:55:22
  */
 public Object loadById(final Class entity, final Serializable id) {
  return getHibernateTemplate().get(entity, id);
 }
 /**
  * 查看所有
  *
  * @param entity
  * @return List AbstractService.java ccp.stock.service.base 下午02:56:06
  */
 public List findAll(final Class entity) {
  return getHibernateTemplate().find("from " + entity.getName());
 }
 /**
  * @param namedQuery
  * @return List AbstractService.java ccp.stock.service.base 下午02:56:55
  */
 public List findByNamedQuery(final String namedQuery) {
  return getHibernateTemplate().findByNamedQuery(namedQuery);
 }
 /**
  * pojo.xml queryName有参数
  *
  * @param query
  * @param parameter
  * @return List AbstractService.java ccp.stock.service.base 下午02:57:23
  */
 public List findByNamedQuery(final String query, final Object parameter) {
  return getHibernateTemplate().findByNamedQuery(query, parameter);
 }
 /**
  * pojo*_.xml queryName[]有参数
  *
  * @param query
  * @param parameters
  * @return List AbstractService.java ccp.stock.service.base 下午02:58:07
  */
 public List findByNamedQuery(final String query, final Object[] parameters) {
  return getHibernateTemplate().findByNamedQuery(query, parameters);
 }
 /**
  * 查找的class对象
  *
  * @param query
  * @return List AbstractService.java ccp.stock.service.base 下午02:59:23
  */
 public List find(final String query) {
  return getHibernateTemplate().find(query);
 }
 /**
  * 查找
  *
  * @param entity
  * @param c
  * @param startIndex
  * @param count
  * @param orders
  * @return List AbstractService.java ccp.stock.service.base 下午03:00:26
  */
 @SuppressWarnings("unchecked")
 public List find(final Class entity, final Criterion criterion,
   final int startIndex, final int count, final List<Order> orders) {
  return (List) getHibernateTemplate().execute(new HibernateCallback() {
   public Object doInHibernate(final Session session)
     throws HibernateException, SQLException {
    final Criteria criteria = session.createCriteria(entity);
    if (criterion != null) {
     criteria.add(criterion);
    }
    if (orders != null) {
     for (Order element : orders) {
      criteria.addOrder(element);
     }
    }
    criteria.setFirstResult(startIndex);
    criteria.setMaxResults(count);
    return criteria.list();
   }
  });
 }
 /**
  * 查找的class对象
  * @param entity
  * @param c
  * @param ps
  * @return PaginationSupport 返回 分页封装 AbstractService.java
  * ccp.stock.service.base 下午03:01:02
  */
 
 public PaginationSupport find(final Class entity,
   final Criterion criterion, final PaginationSupport ps) {
  return find(entity, criterion, ps, null,null);
 }
 /**
  * @param entity
  * @param c
  * 查找的class对象
  * @param ps
  * 分页封装
  * @param orders
  * 排序集合
  * @return PaginationSupport 返回 分页封装 AbstractService.java
  * ccp.stock.service.base 下午03:01:44
  */
 @SuppressWarnings("unchecked")
 public PaginationSupport find(final Class entity,
   final Criterion criterion, final PaginationSupport ps,
   final List<Order> orders) {
  return find(entity, criterion, ps, orders,null);
 }
 //分组分页
 public PaginationSupport find(final Class entity,
   final Criterion criterion, final PaginationSupport ps,
   final List<Order> orders, final String groupStr) {

  return (PaginationSupport) getHibernateTemplate().execute(
    new HibernateCallback() {
     @SuppressWarnings("unchecked")
     public Object doInHibernate(final Session session)
       throws HibernateException, SQLException {
      final Criteria criteria = session
        .createCriteria(entity);
      if (criterion != null) {
       criteria.add(criterion);
      }
      final int totalCount = ((Integer) criteria
        .setProjection(Projections.rowCount())
        .uniqueResult()).intValue(); // 记录总数
      ps.setTotalCount(totalCount);
      criteria.setProjection(null);
        
      if(groupStr!=null){
       criteria.setProjection(Projections.projectionList().add(Projections.groupProperty(groupStr)));
      }
     if (orders != null) {
       for (final Order element : orders) {
        criteria.addOrder(element);
       }
      }
      criteria.setProjection(null);
      criteria.setFirstResult(ps.getStartIndex())
        .setMaxResults(ps.getCountOnEachPage());
      final List list = criteria.list();
      ps.setItems(list);
      return ps;
     }
    });
 }
 
 
    /**
     * query分页
     */
 @SuppressWarnings("unchecked")
 public PaginationSupport find(Query query,final PaginationSupport ps){
  ps.setTotalCount(query.list().size());
  query.setFirstResult(ps.getStartIndex());
  query.setMaxResults(ps.getCountOnEachPage());
  ps.setItems(query.list());
  return ps;
  
 }
}

haohao   2007-03-26 18:46:40 评论:0   阅读:129   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

一切版权属于个人(转载例外)