`
gingguoqiu
  • 浏览: 25540 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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);
  }

}

 

分享到:
评论

相关推荐

    getHibernateTemplate()有模糊查询和 分页

    `getHibernateTemplate().iterate(queryString).next()`这部分代码似乎是为了获取HQL查询("select count() from Info")的结果,即计算`Info`表中的记录总数。然而,这段代码可能不完整,因为它缺少关闭迭代器和...

    Hibernate中Criteria的完整用法

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。通过 Criteria,可以根据实际情况灵活地组装查询条件,以满足复杂的查询需求。 Hibernate 的 Criteria 是...

    Hibernate中Criteria的用法详解

    在Spring框架中,HibernateTemplate提供了一种方便的方式来执行DetachedCriteria查询,通过getHibernateTemplate().findByCriteria(detachedCriteria)方法,可以轻松地根据DetachedCriteria实例执行查询并获取结果。...

    Hibernate中Criteria的完整用法.docx

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。例如,创建一个 Criteria 实例 org.hibernate.Criteria 接口表示,可以使用 Criteria 的 add(Criterion ...

    Hibernate和spring集成

    Spring整合Hibernate后,我们可以通过`HibernateTemplate`的`find()`、`execute()`等方法执行HQL查询,也可以使用`Query`接口进行更复杂的查询。此外,Spring Data JPA的`JpaRepository`接口提供了一种更高级的查询...

    Hibernate的Criteria用法总结

    在Java持久层框架Hibernate中,Criteria API是一种动态构建SQL查询的方法,它允许开发者在运行时构建查询,提供了更面向对象的查询方式。本篇将详细阐述Hibernate Criteria API的使用。 首先,Criteria API由...

    Hibernate - DetachedCriteria 的完整用法

    使用 Criteria 进行查询,主要要清晰的是 Hibernate 提供了那些类和方法来满足开发中查询条件的创建和组装。如使用 `session.createCriteria(Class)` 方法来创建 Criteria 实例,然后使用 `add(Criterion criterion)...

    spring-boot 集成hibernate

    在本文中,我们将深入探讨如何将Spring Boot与Hibernate集成,并使用Druid作为数据库连接池。首先,我们需要理解这三个核心组件: 1. **Spring Boot**: 是一个由Pivotal团队提供的开源框架,它简化了创建独立的、...

    spring4集成hibernate3:xml方式

    在实体类(如`User.java`)中,我们需要使用Hibernate的注解来标记字段,如`@Id`,`@Column`等。 至于实际的数据访问操作,Spring通过`HibernateTemplate`或`HibernateDaoSupport`提供支持。在XML配置中,我们可以...

    hibernate 持久层优化

    3. **索引优化**:为经常作为查询条件的字段添加索引,可以显著加快查询速度。 4. **对象缓存**:利用Hibernate的一级缓存和二级缓存机制,减少数据库的访问频率。 #### 六、总结 持久层的设计和优化对于提高系统的...

    ssh(structs,spring,hibernate)框架中的上传下载

    BlobByteArrayType使用从sessionFactory获取的Lob操作句柄lobHandler将byte[]的数据保存到Blob数据库字段中。这样,我们就再没有必要通过硬编码的方式,先insert然后再update来完成Blob类型数据的持久化,这个原来难...

    hibernate API

    在Java应用中,尤其是企业级应用,Hibernate 提供了一种对象关系映射(ORM)机制,使得开发人员可以使用面向对象的方式来操作数据库,而无需过多关注底层SQL语句的编写。 在给定的描述中,我们看到了两种使用...

    Hibernate使用技巧汇总

    - **特点**: Hibernate始终使用对象类型作为字段类型,即使在数据库中对应的字段是基本类型。 #### 五、XDoclet工具 - **介绍**: XDoclet是一种为Java项目生成各种辅助文件(如Hibernate映射文件)的工具。 - **...

    spring注解整合hibernate

    Spring框架与Hibernate的整合是Java开发中常见的技术组合,它能有效地提高开发效率,简化数据访问层的实现。本文将详细讲解如何通过Spring的注解方式整合Hibernate,以实现一个完整的数据访问解决方案。 首先,我们...

    SPRINT+HIBERNATE

    HibernateTemplate是Spring提供的一个便捷的Hibernate操作模板,它封装了基本的Hibernate操作,如保存、更新、删除和查询,使得开发者可以避免直接操作Session,降低了代码的复杂性。而HibernateDaoSupport则是为...

    Spring与Hibernate相结合的实例

    在现代企业级Java开发中,Spring框架和Hibernate是两个非常重要的技术栈。Spring作为一款轻量级的应用框架,主要负责控制反转(IoC)和面向切面编程(AOP),能够有效地管理对象的生命周期以及依赖关系。而Hibernate...

    STRUTS+SPRING+HIBERNATE

    - **HQL**:Hibernate 查询语言,一种类似于 SQL 的查询语言,但更加面向对象。 #### 五、具体知识点详解 ##### 1. Hibernate 映射文件 ```xml &lt;hibernate-mapping&gt; &lt;generator class="uuid.hex"&gt;&lt;/...

Global site tag (gtag.js) - Google Analytics