hibernate中getHibernateTemplate查询部分字段

package tdh.court09.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.transform.Transformers;
import org.hibernate.type.Type;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class CommonDAO extends HibernateDaoSupport {

  private static final Log MYLOG = LogFactory.getLog(CommonDAO.class);

  /**
   * save
   * 
   * @param transientInstance
   */
  public void save(Object transientInstance) {
    MYLOG.debug("deleting " + Object.class.getName());
    try {
      getHibernateTemplate().save(transientInstance);
      MYLOG.debug("save successful");
    } catch (RuntimeException re) {
      MYLOG.error("save failed", re);
      throw re;
    }
  }

  /**
   * update
   * 
   * @param transientInstance
   */
  public void update(Object transientInstance) {
    MYLOG.debug("deleting " + Object.class.getName());
    try {
      getHibernateTemplate().update(transientInstance);
      MYLOG.debug("save successful");
    } catch (RuntimeException re) {
      MYLOG.error("save failed", re);
      throw re;
    }
  }

  /**
   * delete
   * 
   * @param persistentInstance
   */
  public void delete(Object persistentInstance) {
    MYLOG.debug("deleting " + Object.class.getName());
    try {
      getHibernateTemplate().delete(persistentInstance);
      MYLOG.debug("delete successful");
    } catch (RuntimeException re) {
      MYLOG.error("delete failed", re);
      throw re;
    }
  }

  /**
   * get Object(such as Integer, Long)
   * 
   * @param hql
   * @param objArr
   * @param typeArr
   * @return
   */
  public Object getObjectByHql(final String hql, final Object[] objArr, final Type[] typeArr) {
    MYLOG.debug("getObjectByHql: " + hql);
    try {
      Object obj = getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
          Query query = session.createQuery(hql);
          if (objArr != null) {
            query.setParameters(objArr, typeArr);
          }
          return query.uniqueResult();
        }
      });
      return obj;
    } catch (RuntimeException re) {
      MYLOG.error("get failed", re);
      throw re;
    }
  }

  /**
   * get Object(such as Integer, Long)
   * 
   * @param hql 
   * @param objArr
   * @param typeArr
   * @return
   */
  public Object getObjectByHql(final String hql) {
    return getObjectByHql(hql, null, null);
  }

  /**
   * getList
   * 
   * @param hql
   * @param objArr
   * @param typeArr
   * @return List<Object[]>
   */
  public List<?> getListByHql(final String hql, final Object[] objArr, final Type[] typeArr) {
    MYLOG.debug("getListByHql: " + hql);
    try {
      List<?> list = getHibernateTemplate().executeFind(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
          Query query = session.createQuery(hql);
          if (objArr != null) {
            query.setParameters(objArr, typeArr);
          }
          List<?> list = query.list();
          return list;
        }
      });
      return list;
    } catch (RuntimeException re) {
      MYLOG.error("get failed", re);
      throw re;
    }
  }

  /**
   * getList
   * 
   * @param hql
   * @return List<Object[]>
   */
  public List<?> getListByHql(final String hql) {
    return getListByHql(hql, null, null);
  }

  /**
   * 此方法对含有text的字段不支持
   * 
   * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631'
   * @return List<Map>
   */
  @SuppressWarnings("unchecked")
  public Map<String, Object> getMapBySql(final String sql) {
    MYLOG.debug("getListBySql: " + sql);
    try {
      Object obj = getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
          Query query = session.createSQLQuery(sql);
          query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
          return query.uniqueResult();
        }
      });
      return (Map<String, Object>) obj;
    } catch (RuntimeException re) {
      MYLOG.error("get failed", re);
      throw re;
    }
  }

  /**
   * 此方法对含有text的字段不支持
   * 
   * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631'
   * @return List<Map>
   */
  public List<?> getListBySql(final String sql, final Object[] objArr, final Type[] typeArr) {
    MYLOG.debug("getListBySql: " + sql);
    try {
      List<?> list = getHibernateTemplate().executeFind(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
          Query query = session.createSQLQuery(sql);
          if (objArr != null) {
            query.setParameters(objArr, typeArr);
          }
          query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
          List<?> list = query.list();
          return list;
        }
      });
      return list;
    } catch (RuntimeException re) {
      MYLOG.error("get failed", re);
      throw re;
    }
  }

  /**
   * 此方法对含有text的字段不支持
   * 
   * @param sql eg: select AHDM,AH from AJ where AHDM='227300000005631'
   * @return List<Map>
   */
  public List<?> getListBySql(final String sql) {
    return getListBySql(sql, null, null);
  }

  /**
   * 更新
   * 
   * @param sql
   * @return
   */
  public int updateSql(final String sql, final Object[] objArr, final Type[] typeArr) {
    try {
      int i = (Integer) getHibernateTemplate().execute(new HibernateCallback() {
        public Object doInHibernate(Session session) throws HibernateException, SQLException {
          Query query = session.createSQLQuery(sql);
          if (objArr != null) {
            query.setParameters(objArr, typeArr);
          }
          return query.executeUpdate();
        }
      });
      return i;
    } catch (RuntimeException re) {
      MYLOG.error("get failed", re);
      throw re;
    }
  }

  /**
   * 更新
   * 
   * @param sql
   * @return
   */
  public int updateSql(final String sql) {
    return updateSql(sql, null, null);
  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值