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]);
}
}
}
分享到:
相关推荐
NC65通过BaseDAO操作数据库,包含接口类及接口实现类: /** * 获取baseDAO * @return */ public BaseDAO getBaseDAO() { if(baseDAO == null){ baseDAO = new BaseDAO(); } return baseDAO; } public ...
手动实现BaseDao 自动写数据库操作
hibernate的BaseDAO源代码
java泛型BaseDao与BaseService
基于hibernate的baseDao,注释很详细,方便实用
这个是一个公共的basedao类。需要使用的话直接复制。内容看看就明白了
使用baseDao封装基本的增删改查的方法,包括分页查询等功能
ssh+baseDao实现分页,分享给新人
基于hibernate封装的BaseDao,有完整的增删改查,分页,执行hql sql 方法 约 20个方法,详情地址 https://blog.csdn.net/qq_41861261/article/details/85595872
这个一个Java的BaseDAO和分页处理的ppt,很好哦,没事可以看一下
java最常用的BaseDao和BaseDaoImpl
Spring声明式事务及BaseDao完整版
JDBC连接数据库BaseDao通用类(可以调用存储过程)
最全的javaJDBC技术的BaseDao,相当于框架封装了,引用之后直接调用其中的方法传递参数以及sql语句就可以使用了。
尊重原创——SpringBoot_BaseDao.zip,内部含有反射,获取泛型类类型,如何使用等,自己下载查看
spring4+hibernate4 整合,封装BaseDao增删改查以及分页,,支持jdk1.7,不支持jdk1.8,数据源使用c3p0
Java通用的BaseDao(我是用连接池做的你把里面代码换一下就行了)
Spring整合hibernate(4)之BaseDao的编写示例 说明:因为我们在实际编码中会编写一些重复的数据库操作方法CRUD,每个类都写一次感觉很繁琐,因此可以考虑考虑把所有公共的方法都写在BaseDao中,这个时候,让所有的...
能够实现一对多查询的basedao实现
本资源为两个用java写的连接数据库以及对数据库的操作的代码文件,分别为DaoUtil.java和BaseDao.java。