import java.io.Serializable;
import java.sql.SQLException;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**数据仿问辅助类
* @author llg 2010-12-01
* @param <T>
*/
public class DaoHelper<T> extends HibernateDaoSupport
{
private static final String FORM_SEARCH = "from ";
/**新增
* @param obj (实体对象)
* @return
*/
@SuppressWarnings("unchecked")
public T save(Object obj){
return (T) super.getHibernateTemplate().save(obj);
}
/**按主键删除
* @param entityClass 实体类型
* @param primaryID 主键
*/
@SuppressWarnings("unchecked")
public void del(Class entityClass,Serializable primaryID){
super.getHibernateTemplate().delete(findByID(entityClass, primaryID)) ;
}
/**修改
* @param obj
* @return
*/
@SuppressWarnings("unchecked")
public T update(Object obj){
super.getHibernateTemplate().update(obj);
return (T) obj;
}
/**按主键查询
* @param entityClass 实体类型
* @param primaryID 主键
* @return
*/
@SuppressWarnings("unchecked")
public T findByID(Class entityClass, Serializable primaryID)
{
return (T) super.getHibernateTemplate().get(entityClass, primaryID);
}
/**根据HQL查询单个对象
* @param hql
* @param p
* @return
*/
public T uniqueResultByHql(String hql , Object...p){
return findByHql(hql,null,null,p).get(0);
}
/**根据nameQuery查询单个对象
* @param methodName (要调用的方法配置名)
* @param p
* @return
*/
public T uniqueResultByNameQuery(String methodName , Object...p){
return findByNameQuery(methodName,null,null,p).get(0);
}
/** 查所有
* @param entityClass
* @return
*/
@SuppressWarnings("unchecked")
public List<T> findAll(Class entityClass)
{
return super.getHibernateTemplate().find(
FORM_SEARCH + entityClass.getSimpleName());
}
/**根据HQL动态增删改
* @param hql
* @param p
*/
public void bulkExecuteByHql(String hql , Object...p ){
super.getHibernateTemplate().bulkUpdate(hql, p);
}
/**根据NameQuery动态增删改
* @param methodName(要调用的方法配置名)
* @param p
*/
@SuppressWarnings("unchecked")
public void bulkExecuteByNameQuery(final String methodName,final Object...p){
super.getHibernateTemplate().execute(new HibernateCallback(){
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException
{
Query query = session.getNamedQuery(methodName);
setParameter(query, null, null, p);
query.executeUpdate() ;
return null;
}
});
}
/**根据HQL条件查询
* @param hql
* @param pageSize
* @param currentPage
* @param p
* @return
*/
@SuppressWarnings("unchecked")
public List<T> findByHql(final String hql,final Integer pageSize,final Integer currentPage,final Object... p)
{
return super.getHibernateTemplate().executeFind(new HibernateCallback<List<T>>(){
@Override
public List<T> doInHibernate(Session session) throws HibernateException,
SQLException
{
Query query = session.createQuery(hql);
setParameter(query, pageSize, currentPage, p);
return query.list();
}
});
}
/**根据NameQuery条件查询
* @param methodName
* @param pageSize
* @param currentPage
* @param p
* @return
*/
@SuppressWarnings("unchecked")
public List<T> findByNameQuery(final String methodName,final Integer pageSize,final Integer currentPage,final Object... p){
return super.getHibernateTemplate().executeFind(new HibernateCallback<List<T>>(){
@Override
public List<T> doInHibernate(Session session) throws HibernateException,
SQLException
{
Query query = session.getNamedQuery(methodName) ;
setParameter(query, pageSize, currentPage, p);
return query.list();
}
});
}
/**封闭Query 参数
* @param query
* @param pageSize
* @param currentPage
* @param p
*/
@SuppressWarnings("unused")
private static void setParameter(Query query, Integer pageSize,
Integer currentPage, Object... p)
{
if (pageSize != null && currentPage != null)
query.setFirstResult((currentPage - 1) * pageSize).setMaxResults(pageSize);
if (p != null)
for (int i = 0; i < p.length; i++)
{
query.setParameter(i, p[i]);
}
}
}
分享到:
相关推荐
"基于BaseDao的手动数据库操作"是一个常见的话题,尤其在Java开发中。BaseDao是一种设计模式,它通常被用来作为数据库访问对象(DAO)的基础,用于封装数据库的基本CRUD(创建、读取、更新、删除)操作。这种模式...
"常用的BaseDAO及其实现" BaseDAO是Java中一种常用的数据访问对象(DAO),它提供了统一的数据访问接口,封装了数据访问的基本操作。BaseDAO通常是通过继承HibernateDaoSupport类实现的。 BaseDAO的主要功能包括:...
在Java开发中,BaseDao和BaseService是常见的设计模式,用于实现数据访问层(DAO)和业务逻辑层(Service)的抽象基类。通过结合泛型,我们可以创建更通用、灵活的代码,减少冗余并提高代码质量。 首先,我们来理解...
**基于Hibernate的BaseDAO** 在Java企业级开发中,数据访问层(DAO,Data Access Object)是连接业务逻辑层和数据库的重要桥梁。BaseDAO是一种通用的设计模式,它封装了Hibernate框架的基本操作,使得业务逻辑层...
`BaseDAO`是许多项目中常见的一种设计模式,它代表了数据访问对象(Data Access Object)的基础类,用于封装对数据库的通用操作。现在我们来深入探讨`hibernate`中的`BaseDAO`及其相关知识点。 首先,DAO设计模式是...
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
在IT行业中,SSH(Spring、Struts、Hibernate)是一个经典的Java Web开发框架组合,而BaseDao是常用于数据访问层的一个基类设计。本话题主要围绕如何利用SSH框架结合BaseDao实现分页功能来展开。 首先,让我们了解...
本篇将重点讲解Spring的声明式事务管理和BaseDao的设计与实现。 一、Spring声明式事务管理 1. **什么是事务**:事务是数据库操作的基本单元,它保证了数据的一致性和完整性。一个事务中的所有操作要么全部成功,...
在企业级软件开发中,通用BaseDao方法集是提高代码复用性和开发效率的重要工具。BaseDao(Base Data Access Object)通常是一个基类,它包含了数据库操作的基本方法,供其他具体的DAO类继承使用。BaseDao的设计理念...
"SpringBoot_BaseDao.zip"这个压缩包文件显然与SpringBoot相关的数据库操作有关,特别是关于BaseDao的基础使用和实现。在Java开发中,Dao(Data Access Object)层是负责处理数据访问的,通常用于与数据库进行交互。...
### 基于Spring JDBC的BaseDAO实现与应用 #### 概述 在Java开发领域,尤其是企业级应用开发中,持久层框架是至关重要的组件之一。Spring框架提供了多种方式来处理数据库操作,其中Spring JDBC模块是轻量级且功能...
在标题提到的"SSH集成查询分页处理BaseDao"中,我们主要关注的是如何在SSH框架下实现数据的分页查询。 分页是大型Web应用中必不可少的功能,它能够帮助用户更有效地浏览和管理大量数据。在这个场景中,"BaseDao...
在Java开发中,BaseDao(基础数据访问对象)是一个常见的设计模式,用于提供数据库操作的通用接口或基类。这个模式的主要目标是提高代码的复用性和可维护性,通过抽象出基本的CRUD(创建、读取、更新、删除)操作,...
在Java编程语言中,`BaseDao.java` 和 `DaoUtil.java` 文件通常包含了与数据库交互的核心逻辑,特别是针对关系型数据库如MySQL。这两个文件中的类和方法是基于JDBC(Java Database Connectivity)API实现的,这是一...
`BaseDAO` 的封装则是一种常见的设计模式,用于简化数据访问对象(DAO)的实现,使得业务代码更加简洁、可维护。 `dbutils` 主要包含以下几个核心概念和功能: 1. **QueryRunner**: QueryRunner类是dbutils的主要...
在Java开发中,`BaseDao` 是一个常见的设计模式,用于提供数据访问对象(DAO)的基础功能,方便其他业务逻辑层或数据访问层组件进行数据库操作。本篇将深入探讨如何利用注解和反射机制来封装一个支持一对多查询的 `...
3. **BaseDao封装**:BaseDao是一般用于数据访问层的基类,它包含了通用的CRUD操作。在这个项目中,BaseDao可能已经定义了如`save()`, `update()`, `delete()`, `findById()`, `findAll()`等方法,以供其他特定的DAO...
`BaseDao`是常见的一种设计模式,用于封装Hibernate的基本数据库操作,它为业务层提供了一种统一的接口,方便进行CRUD(创建、读取、更新、删除)操作。在这个主题中,我们将深入探讨`BaseDao`的设计与实现,以及...
使用baseDao封装基本的增删改查的方法,包括分页查询等功能
### JDBC与BaseDao通用类 #### JDBC(Java Database Connectivity) JDBC是一种用于执行SQL语句的Java API,它可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC定义了一系列的API,...