`
wangzhezichuan
  • 浏览: 663 次
  • 性别: Icon_minigender_1
  • 来自: 重庆-武隆
社区版块
存档分类
最新评论

hibernate dao层应用之HibernateDaoSupport二次封装

阅读更多
/**
* <p>方法描述:sql语句查询 返回List<Class> </p>
* <p>方法备注: Class 只能是自定义类 </p>
* @param calzz
* @param sql
* @return
* <p>创建人:王川</p>
* <p>创建时间:Jul 9, 2015 4:44:16 PM</p>
*
*/
public List findSql(Class calzz ,String sql){
Query query = this.getSession().createSQLQuery(sql);
return query.setResultTransformer(new AliasToBeanResultTransformer_CBRC(calzz)).list();
}

/**
* <p>方法描述:sql语句查询 返回Object<Class> </p>
* <p>方法备注: Class 只能是自定义类 </p>
* @param calzz
* @param sql
* @return
* <p>创建人:王川</p>
* <p>创建时间:Jul 9, 2015 4:44:16 PM</p>
*
*/
public Object findSqlUnique(Class calzz ,String sql){
Query query = this.getSession().createSQLQuery(sql);
return query.setResultTransformer(new AliasToBeanResultTransformer_CBRC(calzz)).uniqueResult();
}


/**
* <p>方法描述:HQL分页查询 </p>
* <p>方法备注: </p>
* @param _page
* @param hql
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 9:51:29 AM</p>
*
*/
/*-------------------------------------------------------------------*/
public void findPage(Page _page,String hql) throws BaseException{
findPage(_page, hql, null);
}

public void findPage(Page _page, String hql, List _params) throws BaseException{
findPage(_page, hql, _params, null);
}

public void findPage(Page _page, String hql, List<Object> _params, List<String> _paramsNM) throws BaseException{
int totalRecord = findPageTotal(hql, _params, _paramsNM);
_page.setTotalRecord(totalRecord);
Query query = getSession().createQuery(hql);
setQueryParams(query, _params, _paramsNM);
query.setFirstResult(_page.getStartIndex());
query.setMaxResults(_page.getPageSize());
_page.setDataList(query.list());
}
/*-------------------------------------------------------------------*/

/**
* <p>方法描述: HQL分页统计</p>
* <p>方法备注: </p>
* @param hql
* @return
* @throws BaseException
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 11:15:27 AM</p>
*
*/
/*-------------------------------------------------------------------*/
public int findPageTotal(String hql) throws BaseException{
return findPageTotal(hql,null);
}

public int findPageTotal(String hql, List _params) throws BaseException {
return findPageTotal(hql, _params, null);
}

public int findPageTotal(String hql, List<Object> _params, List<String> _paramsNM) throws BaseException{
Query query = getSession().createQuery(getPageTotalStr(hql));
setQueryParams(query, _params, _paramsNM);
List result = query.list();
if ((result != null) && (!(result.isEmpty())))
return Integer.parseInt(result.get(0).toString());
return 0;
}
/*-------------------------------------------------------------------*/

/**
* <p>方法描述:SQL分页查询 </p>
* <p>方法备注: </p>
* @param _page
* @param hql
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 9:51:29 AM</p>
*
*/
/*-------------------------------------------------------------------*/
public void findPageSQL(Class calzz, Page _page,String sql) throws BaseException{
findPageSQL(calzz, _page, sql, null);
}

public void findPageSQL(Class calzz, Page _page, String sql, List _params) throws BaseException{
findPageSQL(calzz, _page, sql, _params, null);
}

public void findPageSQL(Class calzz, Page _page, String sql, List<Object> _params, List<String> _paramsNM) throws BaseException{
sql = makeTempSql(sql);
int totalRecord = findPageTotalSQL(sql, _params, _paramsNM);
_page.setTotalRecord(totalRecord);
SQLQuery query = getSession().createSQLQuery(sql);
setQueryParams(query, _params, _paramsNM);
query.setFirstResult(_page.getStartIndex());
query.setMaxResults(_page.getPageSize());
query.setResultTransformer(new AliasToBeanResultTransformer_CBRC(calzz));
_page.setDataList(query.list());
}
/*-------------------------------------------------------------------*/

/**
* <p>方法描述: SQL分页统计</p>
* <p>方法备注: </p>
* @param hql
* @return
* @throws BaseException
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 11:15:27 AM</p>
*
*/
/*-------------------------------------------------------------------*/
public int findPageTotalSQL(String sql) throws BaseException{
return findPageTotalSQL(sql,null);
}

public int findPageTotalSQL(String sql, List _params) throws BaseException {
return findPageTotalSQL(sql, _params, null);
}

public int findPageTotalSQL(String sql, List<Object> _params, List<String> _paramsNM) throws BaseException{
SQLQuery query = getSession().createSQLQuery(getPageTotalStr(sql));
setQueryParams(query, _params, _paramsNM);
List result = query.list();
if ((result != null) && (!(result.isEmpty())))
return Integer.parseInt(result.get(0).toString());
return 0;
}
/*-------------------------------------------------------------------*/

protected String makeTempSql(String sql){
return "select t_.* from ("+sql+") t_ ";
}

/**
* <p>方法描述:设置查询参数 </p>
* <p>方法备注: </p>
* @param query
* @param _params
* @param _paramsNM
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 2:13:21 PM</p>
*
*/
protected void setQueryParams(Query query,List<Object> _params, List<String> _paramsNM){
if(null == _params){
}
else if(null == _paramsNM){
for (int i = 0; i < _params.size(); ++i) {
query.setParameter(i, _params.get(i));
}
}
else{
for (int i = 0; i < _params.size(); ++i) {
query.setParameter(_paramsNM.get(i), _params.get(i));
}
}
}

/**
* <p>方法描述:获取总条数sql查询语句 </p>
* <p>方法备注: </p>
* @param sql
* @return
* @throws BaseException
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 2:13:57 PM</p>
*
*/
protected String getPageTotalStr(String sql) throws BaseException{
int start = sql.toUpperCase().indexOf("FROM");
    if (start == -1)
    throw new BaseException("sql sentence is Error,have no FROM key!");
    String from = sql.substring(start, sql.length());
    return "select count(*) " + from;
}

/**
* <p>方法描述:sql语句执行 update delete insert </p>
* <p>方法备注: </p>
* @param sql
* <p>创建人:王川</p>
* <p>创建时间:Jul 10, 2015 2:22:53 PM</p>
*
*/
/*-------------------------------------------------------------------*/
public void executeSql(String sql) {
executeSql(sql, null);
}

public void executeSql(String sql, List<Object> _params) {
executeSql(sql, _params, null);
}

public void executeSql(String sql, List<Object> _params, List<String> _paramsNM) {
SQLQuery query = getSession().createSQLQuery(sql);
setQueryParams(query, _params, _paramsNM);
query.executeUpdate();
}
/*-------------------------------------------------------------------*/
分享到:
评论

相关推荐

    HibernateDaoSupport二次封装组件,快速统计和查询,修改

    本文将深入探讨`HibernateDaoSupport`的二次封装,以及如何通过封装来实现快速的统计、查询、修改和删除操作,同时也会涉及SQL语句中的`in`、`or`和`exists`子句的应用。 首先,`HibernateDaoSupport`提供了对`...

    JPA(hibernate) Dao 和 DaoSupport

    综上所述,`JPA(hibernate) Dao 和 DaoSupport`涉及到Java持久化技术,主要关注如何通过面向对象的方式操作数据库,以及如何设计和使用DAO层来封装数据访问逻辑。在实际项目中,我们还需要了解如何使用Spring Data ...

    SpringSide的Hibernate封装

    第二层是HibernateEntityDao,它继承自HibernateGenericDao,进一步抽象了DAO层。通过使用泛型,可以直接声明DAO管理的实体类,这样就可以默认拥有对该实体类的CRUD(Create、Read、Update、Delete)操作。例如,只...

    HibernateDaoSupport 与@Autowired

    首先,`HibernateDaoSupport`是Hibernate提供的一种用于简化DAO(Data Access Object)层开发的抽象基类。它属于`org.springframework.orm.hibernate5.support`包,为自定义DAO类提供了便捷的初始化和会话管理功能。...

    HibernateDaoSupport的使用

    总结,`HibernateDaoSupport`是Spring框架中为了简化Hibernate DAO层实现的一个重要工具,它通过提供SessionFactory注入、自动Session管理以及封装的HibernateTemplate,极大地提高了开发效率,降低了出错概率。...

    使用配置文件对DAO层封装具有分页功能的S2SH整合实例_好资源0分送

    本文档旨在详细介绍如何使用配置文件的方式完成DAO层的封装,并在此基础上实现分页功能,最终达成S2SH(Struts、Spring、Hibernate)的整合。此文档作为对《使用Annotation并对DAO层封装具有分页功能的S2SH整合实例...

    Struts2,Spring与Hibernate整合应用,学生成绩管理系统

    首先,生成POJO类和映射文件,然后开发DAO层,利用HibernateDaoSupport类进行数据库操作。在Spring配置文件中定义DAO层bean,并注入SessionFactorybean的引用,以便Spring管理Hibernate的生命周期。 #### 三、实验...

    Spring2 Hibernate3集成

    Spring与Hibernate的集成是现代Java企业级应用开发中非常常见的模式之一。通过对Spring提供的事务管理和DAO支持的充分利用,以及Hibernate提供的强大ORM能力,可以构建出高效且易于维护的应用程序。在实际开发过程中...

    hibernateDaoSupport.txt

    3. **封装框架依赖**:通过`HibernateDaoSupport`等类封装Hibernate框架的依赖,使得上层代码更加纯净,降低了耦合度。同时,这种方式还支持不同的Hibernate版本,如从Hibernate 2升级到Hibernate 3或更高版本时,只...

    DAO模式设计

    DAO(Data Access Object)模式是软件开发中常用的设计模式,主要目的是为了将数据访问层与业务逻辑层解耦,提供一个抽象层来处理数据库操作。DAO模式的核心思想是通过创建一个独立于具体数据库操作的对象(即DAO)...

    第24次课-1 Spring与Hibernate的整合

    第24次课-1 Spring与Hibernate的整合 本节主要内容 24.1 概述 24.2 管理SessionFactory 24.3 Spring对Hibernate的简化 24.1 概述 24.1.1 概述 Spring提供了很多IoC特性的支持,方便处理大部分典型的Hibernate整合...

    hibernateTemplate和HibernateDaoSupport

    HibernateDaoSupport 是 Spring 为 Hibernate DAO 层提供的辅助类,它的主要作用是为 DAO 类提供了一个方便的基类。HibernateDaoSupport 提供了两个核心方法: 1. `public final HibernateTemplate ...

    韩顺平spring 雇员管理系统hibernate jar包

    4. **DAO和Service层设计**:在雇员管理系统中,Hibernate常被用作DAO(Data Access Object)层的技术,封装数据库操作,提供给Service层调用。Service层负责业务逻辑,处理事务控制,使得业务代码与数据访问层分离...

    Spring,Hibernate整合源码

    4. **HibernateTemplate与HibernateDaoSupport**:Spring提供了HibernateTemplate和HibernateDaoSupport,它们为DAO层提供了便捷的操作方法,如save、update、delete、find等,同时处理了事务和异常。 5. **JPA集成...

    HibernateDaoSupport.docx

    【HibernateDaoSupport】是Spring框架中的一个抽象类,主要用于简化Hibernate的数据访问操作,它为DAO层提供了方便的事务管理和Session管理。这个类是Spring与Hibernate集成的重要组件,尤其对于初学者来说,理解其...

    spring几种Dao支持配置

    `HibernateTemplate`封装了Hibernate的会话管理,提供了一套便捷的API,而`HibernateDaoSupport`则为DAO实现提供了一个基类,包含了SessionFactory的初始化和关闭。 - **MyBatis**:Spring整合MyBatis时,可以通过...

    Spring整合Hibernate 详解.doc

    Spring为Hibernate提供了全面的集成方案,简化了DAO(Data Access Object)的开发,同时也支持其他ORM框架,使得应用能够在不同持久化技术间灵活切换。 6.5.1 Spring提供的DAO支持 Spring通过提供一系列的DAO抽象类...

    spring-orm-hibernate4源码

    HibernateDaoSupport则提供了一个抽象基类,包含HibernateTemplate实例,方便DAO层的开发。 5. **事务管理**: Spring支持编程式和声明式事务管理。在Hibernate4中,声明式事务管理通常通过`@Transactional`注解实现...

    spring集成hibernate

    在Spring-Hibernate集成项目中,通常会创建一个DAO接口和它的实现类,以及对应的服务层接口和服务实现类。DAO层负责具体的数据库操作,服务层则负责业务逻辑,两者之间通过Spring的依赖注入进行连接。 6. **使用...

    Spring+Hibernate实现增删改查的两种方法

    在DAO层,你可以创建一个接口和其实现类,注入HibernateTemplate,例如: ```java public interface UserDAO { void saveUser(User user); // 其他CRUD方法 } @Repository public class UserDAOImpl ...

Global site tag (gtag.js) - Google Analytics