博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate 封装dao
阅读量:6085 次
发布时间:2019-06-20

本文共 12972 字,大约阅读时间需要 43 分钟。

public interface BaseDao
{ /** * 将pojo对象持久化到数据库 * @param pojo 需要持久化的pojo,类型为泛型所指定类型 * @return void * */ public void save(POJO pojo); /** * 将记录从数据库删除 * @param pojo 需要删除的pojo,类型为泛型所指定类型 * @return void * */ public void delete(POJO pojo); /** * 将记录从数据库中批量删除 * @param entities 需要删除实体集合 * @return void * */ public void deleteAll(Collection
entities); /** * 更新数据库记录 * @param pojo 需要更新的pojo,类型为泛型所指定类型 * @return void * */ public void update(POJO pojo); /** * 获得数据库所有记录get * @param pojoName pojo的类名字符串 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ public List
getAll(String pojoName,String orderBy); /** * 获得数据库所有记录 load * @param pojoName pojo的类名字符串 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ @SuppressWarnings("unchecked") public List
loadAll(POJO pojo); /** * 根据主键,获得数据库一条对应的记录 * @param longPojoName pojo的类包名字符串 * @param ID 主键类型可以是(Integer,Float,Double,Short,Byte,String) * @return POJO 从数据库获得的相应记录,POJO的实例,类型为POJO泛型 * */ public POJO getPojoById(String longPojoName,Serializable ID); /** * 根据主键,获得数据库一条对应的记录,如果没有相应的实体,抛出异常 * @param longPojoName pojo的类包名字符串 * @param ID 主键类型可以是(Integer,Float,Double,Short,Byte,String) * @return POJO 从数据库获得的相应记录,POJO的实例,类型为POJO泛型 * */ @SuppressWarnings("unchecked") public POJO loadPojoById(String longPojoName,Serializable ID) ; /** * 根据POJO的属性获得数据库相应记录(相当于根据查询条件的字符串获得相应记录) * @param queryString 查询条件的字符串 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ public List
findByProperty(String queryString); /** * 批量更新或保存记录 * @param entities 实体类集成 * @return void * */ public void saveOrUpdateAll(Collection
entities); /** * 获得数据库表的总记录数 * @param queryString count sql * @return int 数据库表的总记录数 * */ public int getRowCount(String queryString); /** *功能描述:获得hibernate session *@author *@para *@return Session */ public Session openSession(); /** * 功能说明:分页查询 * @author * @param start 第几页,页码 * @param limit 页面大小 * @param queryString hql * @return * @throws Exception * @throws */ @SuppressWarnings("unchecked") public List
findByHqlWithPagination(final int start, final int limit, final String queryString,final List params); /** * 功能说明:执行HQL语句 * @author * @param hqlString * @throws Exception */ public void excuteHql(final String hqlString) throws Exception; /** * 获得单行记录 * @param pojoName pojo的类名字符串 * @return int 数据库表的总记录数 * */ public Object getSingleRowRecord(String queryString); /** * 功能说明:批量保存 * @author * @param entities * @throws Exception */ public void batchSave(final Collection entities);}

 

上面是接口,下面是实现。

public class BaseDaoHibImpl 
extends HibernateDaoSupport implements BaseDao
{ Logger log = Logger.getLogger(BaseDaoHibImpl.class); /** * 将记录持久化到数据库 * @param pojo 需要持久化的pojo,类型为泛型所指定类型 * @return void * */ public void save(POJO pojo) { if(pojo == null){ throw new SystemException("POJO is null in BaseDAOHibernateImpl's sava(),it mustn't be null."); } try { getHibernateTemplate().save(pojo); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's sava() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's sava() occur error : ",e); } log.debug("BaseDAOHibernateImpl's save() run successful."); } /** * 将记录从数据库删除 * @param pojo 需要删除的pojo,类型为泛型所指定类型 * @return void * */ public void delete(POJO pojo) { if(pojo == null){ throw new SystemException("POJO is null in BaseDAOHibernateImpl's delete(),it mustn't be null."); } try { getHibernateTemplate().delete(pojo); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's delete() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's delete() occur error : ",e); } log.debug("BaseDAOHibernateImpl's delete() run successful."); } /** * 将记录从数据库中批量删除 * @param entities 需要删除实体集合 * @return void * */ public void deleteAll(Collection
entities){ if(entities == null){ throw new SystemException("POJO is null in BaseDAOHibernateImpl's deleteAll(),it mustn't be null."); } try { getHibernateTemplate().deleteAll(entities); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's deleteAll() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's deleteAll() occur error : ",e); } log.debug("BaseDAOHibernateImpl's deleteAll() run successful."); } /** * 更新数据库记录 * @param pojo 需要更新的pojo,类型为泛型所指定类型 * @return void * */ public void update(POJO pojo){ if(pojo == null){ throw new SystemException("POJO is null in BaseDAOHibernateImpl's update(),it mustn't be null."); } try { getHibernateTemplate().update(pojo); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's update() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's update() occur error : ",e); } log.debug("BaseDAOHibernateImpl's update() run successful."); } /** * 获得数据库所有记录 get * @param pojoName pojo的类名字符串 * @param orderBy 字段排序 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ @SuppressWarnings("unchecked") public List
getAll(String pojoName,String orderBy) { if((pojoName == null)||"".equals(pojoName)){ throw new SystemException("pojoName is null or \" \" in BaseDAOHibernateImpl's findAll(),it mustn't be that."); } StringBuffer sb = new StringBuffer(); sb.append("from " + pojoName); sb.append(" "); sb.append(orderBy); String queryString = sb.toString(); log.debug(queryString); List
list = null; try { list = (List
)getHibernateTemplate().find(queryString); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's findAll() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's findAll() occur error : ",e); } log.debug("BaseDAOHibernateImpl's findAll() run successful."); return list; } /** * 获得数据库所有记录 load * @param pojoName pojo的类名字符串 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ @SuppressWarnings("unchecked") public List
loadAll(POJO pojo) { if((pojo == null)||"".equals(pojo)){ throw new SystemException("pojo is null or \" \" in BaseDAOHibernateImpl's loadAll(),it mustn't be that."); } List
list = null; try { list = (List
)getHibernateTemplate().loadAll(pojo.getClass()); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's loadAll() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's loadAll() occur error : ",e); } log.debug("BaseDAOHibernateImpl's loadAll() run successful."); return list; } /** * 根据主键,获得数据库一条对应的记录,如果没有相应的实体,返回 null * @param longPojoName pojo的类包名字符串 * @param ID 主键类型可以是(Integer,Float,Double,Short,Byte,String) * @return POJO 从数据库获得的相应记录,POJO的实例,类型为POJO泛型 * */ @SuppressWarnings("unchecked") public POJO getPojoById(String longPojoName,Serializable ID) { if((longPojoName == null)||"".equals(longPojoName)){ throw new SystemException("longPojoName is null or \" \" in BaseDAOHibernateImpl's getPojoById(),it mustn't be that."); } POJO pojo = null; try { pojo = (POJO)getHibernateTemplate().get(longPojoName, ID); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's getPojoById() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's getPojoById() occur error : ",e); } log.debug("BaseDAOHibernateImpl's getPojoById() run successful."); return pojo; } /** * 根据主键,获得数据库一条对应的记录,如果没有相应的实体,抛出异常 * @param longPojoName pojo的类包名字符串 * @param ID 主键类型可以是(Integer,Float,Double,Short,Byte,String) * @return POJO 从数据库获得的相应记录,POJO的实例,类型为POJO泛型 * */ @SuppressWarnings("unchecked") public POJO loadPojoById(String longPojoName,Serializable ID) { if((longPojoName == null)||"".equals(longPojoName)){ throw new SystemException("longPojoName is null or \" \" in BaseDAOHibernateImpl's loadPojoById(),it mustn't be that."); } POJO pojo = null; try { pojo = (POJO)getHibernateTemplate().load(longPojoName, ID); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's loadPojoById() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's loadPojoById() occur error : ",e); } log.debug("BaseDAOHibernateImpl's loadPojoById() run successful."); return pojo; } /** * 根据POJO的属性获得数据库相应记录(相当于根据查询条件的字符串获得相应记录) * @param queryString 查询条件的字符串 * @return List
从数据库获得的相应记录的结果集,list的元素为POJO泛型 * */ @SuppressWarnings("unchecked") public List
findByProperty(String queryString) { if((queryString == null)||"".equals(queryString)){ throw new SystemException("queryString is null or \" \" in BaseDAOHibernateImpl's findByProperty(),it mustn't be that."); } List
list = null; try { list = (List
)getHibernateTemplate().find(queryString); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's findByProperty() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's findByProperty() occur error : ",e); } log.debug("BaseDAOHibernateImpl's findByProperty() run successful."); return list; } /** * 使用带参数的HSQL语句检索数据 * @param queryString 查询条件 * @param paras 查询参数 */ public List findByPropertyWithParas(String queryString, Object[] paras) { if((queryString == null)||"".equals(queryString)){ throw new SystemException("queryString is null or \" \" in BaseDAOHibernateImpl's findByPropertyWithParas(),it mustn't be that."); } List
list = null; try { list = (List
)getHibernateTemplate().find(queryString, paras); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's findByPropertyWithParas() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's findByPropertyWithParas() occur error : ",e); } log.debug("BaseDAOHibernateImpl's findByPropertyWithParas() run successful."); return list; } /** * 批量更新或保存记录 * @param entities 实体类集成 * @return void * */ public void saveOrUpdateAll(Collection
entities){ try { this.getHibernateTemplate().saveOrUpdateAll(entities); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's findByProperty() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's findByProperty() occur error : ",e); } log.debug("BaseDAOHibernateImpl's saveOrUpdateAll() run successful."); } /** * 获得单行记录 * @param pojoName pojo的类名字符串 * @return int 数据库表的总记录数 * */ public Object getSingleRowRecord(String queryString){ if((queryString == null)||"".equals(queryString)){ throw new SystemException("queryString is null or \" \" in BaseDAOHibernateImpl's getSingleRowRecord(),it mustn't be that."); } Object record = null; try { Session session = openSession(); record = session.createQuery(queryString).uniqueResult(); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's getSingleRowRecord() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's getSingleRowRecord() occur error : ",e); } log.debug("BaseDAOHibernateImpl's getSingleRowRecord() run successful."); return record; } /** * 获得数据库表的总记录数 * @param pojoName pojo的类名字符串 * @return int 数据库表的总记录数 * */ public int getRowCount(String queryString){ if((queryString == null)||"".equals(queryString)){ throw new SystemException("queryString is null or \" \" in BaseDAOHibernateImpl's getRowCount(),it mustn't be that."); } int count = 0; try { Session session = openSession(); Long countLong = (Long)session.createQuery(queryString).uniqueResult(); count = countLong.intValue(); } catch (DataAccessException e) { log.error("BaseDAOHibernateImpl's getRowCount() occur error : ",e); throw new SystemException("BaseDAOHibernateImpl's getRowCount() occur error : ",e); } log.debug("BaseDAOHibernateImpl's getRowCount() run successful."); return count; } /** * 获得数据库表的总记录数 * @param pojoName pojo的类名字符串 * @param params 查询参数 * @return int 数据库表的总记录数 * */ public int getRowCount(String queryString,List params){ if((queryString == null)||"".equals(queryString)){ throw new SystemException("queryString is null or \" \" in BaseDAOHibernateImpl's getRowCount(),it mustn't be that."); } int count = 0; try { Session session = openSession(); Query query = session.createQuery(queryString); if(params != null){ for(int i=0;i
findByHqlWithPagination(final int start, final int limit, final String queryString,final List params) { return (List
) getHibernateTemplate().executeWithNativeSession(new HibernateCallback() { public Object doInHibernate(final Session session) throws HibernateException, SQLException { List
list = null; final Query query = session.createQuery(queryString); query.setFirstResult(start); query.setMaxResults(limit); if(params != null){ for(int i=0;i

 

 

转载于:https://www.cnblogs.com/20121207program/p/3667339.html

你可能感兴趣的文章
字符设备与块设备的区别
查看>>
为什么我弃用GNOME转向KDE(2)
查看>>
Redis学习记录初篇
查看>>
爬虫案例若干-爬取CSDN博文,糗事百科段子以及淘宝的图片
查看>>
Web实时通信技术
查看>>
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
使用ansible工具部署ceph
查看>>