- 浏览: 159668 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (129)
- MySQL之alter语句用法总结 (3)
- JAVA基础 (4)
- mysql的参考资料 (1)
- spring学习的URL 备忘录 (1)
- web页面 (3)
- memcached的安装 (1)
- guzz (1)
- iframe 隐藏下拉选项 (1)
- mysql (9)
- 微服务 (3)
- 算法 (1)
- 云 (1)
- redis (0)
- shiro (5)
- zTree (1)
- 设计模式 (1)
- 事物 (1)
- 杂谈 (1)
- centos7 oracle 开机自启动 (1)
- linux 定时任务 (1)
- was (1)
- datagrid easyui (1)
- 代码整洁之道随手笔记 (1)
- 生活 (0)
- Tomcate (1)
最新评论
-
mikey_5:
原来是这么回事儿呀
Oracle bitand()函数使用方法 -
softherk:
非常感谢啊
struts2.0的学习资料 -
zxd7900663:
非常感谢哈哈
struts2.0的学习资料 -
overyear:
呵呵。谢谢
struts2.0的学习资料 -
shiren1118:
知识库里robin放了一个~~~~~~
struts2.0的学习资料
最近想玩会,写点东西练下手,还没有经过测试,这个肯定不够完美,做个自已的备份用。
有人想用请自已测一下吧,有时间再继续进行修改完善。
有人想用请自已测一下吧,有时间再继续进行修改完善。
package com.zhenjw.dao; import java.util.Date; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.Transaction; import com.zhenjw.common.HibernateSessionFactory; import com.zhenjw.common.QueryResult; /** * Hibernate base DataBase Access Object * @author zjw * @datetime Jun 18, 200910:00:19 PM */ public class BaseDao { private Logger logger=Logger.getLogger(this.getClass()); /** * */ public BaseDao() { // TODO Auto-generated constructor stub } /** * 功能:保存数据 * @param entity * @throws DaoException */ public void create(Object entity)throws DaoException { logger.debug("create , entity.classname"+entity.getClass().getName()); Session session=null; Transaction tr=null; boolean commitFlag=false; try{ session=this.getSession(); tr=session.beginTransaction(); tr.begin(); session.save(entity); tr.commit(); commitFlag=true; session.flush(); }catch(HibernateException e) { this.haveHibernateException("basedao.create.error", e); } finally{ this.closeSession(session, tr, commitFlag); } } /** * 功能:修改数据 * @param entity * @throws DaoException */ public void update(Object entity)throws DaoException { logger.debug("update , entity.classname"+entity.getClass().getName()); Session session=null; Transaction tr=null; boolean commitFlag=false; try{ session=this.getSession(); tr=session.beginTransaction(); tr.begin(); session.update(entity); tr.commit(); commitFlag=true; session.flush(); }catch(HibernateException e) { this.haveHibernateException("basedao.update.error", e); } finally{ this.closeSession(session, tr, commitFlag); } } /** * 功能:根据ID得到对象 * @param clazz * @param id * @return Object * @throws DaoException */ public Object getEntityById(Class clazz,long id)throws DaoException { Session session=null; Object result=null; try{ result=session.get(clazz, id); }catch(HibernateException e) { this.haveHibernateException("basedao.getEntityById.error", e); }finally { this.closeSession(session); } return result; } /** * 功能:删除记录 * @param tableName 表名 * @param idFieldName 表的ID字段的名称 * @param id ID数组 * @throws DaoException */ public void delete(String tableName ,String idFieldName,long[] id)throws DaoException { logger.debug(" delete tableName="+tableName+" ,idFieldName="+ idFieldName ); if(id==null) logger.debug(" id is null "); else { StringBuilder idB=new StringBuilder(); for(int i=0 ;i<id.length;i++) { if(i>0) idB.append(","); idB.append(id[i]); } logger.debug(" id ="+idB.toString()); Session session=null; Transaction tr=null; boolean commitFlag=false; try{ StringBuilder deleteSql=new StringBuilder(); deleteSql.append(" delete from ").append(tableName) .append(" where ").append( idFieldName ).append(" in ( "+idB.toString()+" ) "); logger.debug("deleteSql="+ deleteSql.toString()); session=this.getSession(); tr=session.beginTransaction(); tr.begin(); session.createSQLQuery( deleteSql.toString()).executeUpdate(); tr.commit(); commitFlag=true; session.flush(); }catch(HibernateException e) { this.haveHibernateException("basedao.delete.error", e); }finally{ this.closeSession(session, tr, commitFlag); } } } /** * 功能:分页查询 * @param queryCount 查询记录总数的SQL * @param queryData 查询数据的SQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryBySql(StringBuilder queryCount,StringBuilder queryData,int pageNo,int pageSize)throws DaoException { return this.queryBySql(queryCount, queryData, pageNo, pageSize, null); } /** * 功能:分页查询 * @param queryCount 查询记录总数的SQL * @param queryData 查询数据的SQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @param params 参数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryBySql(StringBuilder queryCount,StringBuilder queryData,int pageNo,int pageSize,List params)throws DaoException { return this.queryBySql(queryCount.toString(), queryData.toString(), pageNo, pageSize, params); } /** * 功能:分页查询 * @param queryCount 查询记录总数的SQL * @param queryData 查询数据的SQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryBySql(String queryCount,String queryData,int pageNo,int pageSize)throws DaoException { return this.queryBySql(queryCount, queryData, pageNo, pageSize, null); } /** * 功能:分页查询 * @param queryCount 查询记录总数的SQL * @param queryData 查询数据的SQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @param params 参数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryBySql(String queryCount,String queryData,int pageNo,int pageSize,List params)throws DaoException { QueryResult result=new QueryResult(); logger.debug("queryBySql \n queryCount="+queryCount+" \n queryData="+queryData+" \n pageNo ="+pageNo+" \n pageSize"+pageSize); this.writeLogger(null, params); Session session=null; try{ session=this.getSession(); int totalRow=this.getRowCountNum(session.createSQLQuery(queryCount).list() ); result.setTotalRow(totalRow); result.setPageSize(pageSize); int totalPage=result.getPageNo(); if(totalPage<pageNo) pageNo=totalPage; result.setPageNo(pageNo); //查询数据 SQLQuery query=session.createSQLQuery(queryData); this.setParamters(params, query); this.setTurnPageParam(pageNo, pageSize, query); result.setDataList(query.list()); }catch(HibernateException e) { this.haveHibernateException("basedao.queryBySql.error", e); }finally{ this.closeSession(session); } return result; } /** * 功能:分页查询 * @param queryCount 查询记录总数的HQL * @param queryData 查询数据的HQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryByHql(StringBuilder queryCount,StringBuilder queryData,int pageNo,int pageSize)throws DaoException { return this.queryByHql(queryCount, queryData, pageNo, pageSize, null); } /** * 功能:分页查询 * @param queryCount 查询记录总数的HQL * @param queryData 查询数据的HQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @param params 参数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryByHql(StringBuilder queryCount,StringBuilder queryData,int pageNo,int pageSize,List params)throws DaoException { return this.queryByHql(queryCount.toString(), queryData.toString(), pageNo, pageSize, params); } /** * 功能:分页查询 * @param queryCount 查询记录总数的HQL * @param queryData 查询数据的HQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryByHql(String queryCount,String queryData,int pageNo,int pageSize) { return this.queryByHql(queryCount, queryData, pageNo, pageSize, null); } /** * 功能:分页查询 * @param queryCount 查询记录总数的HQL * @param queryData 查询数据的HQL * @param pageNo 当前页的页码 * @param pageSize 每页显示的记录条数 * @param params 参数 * @return QueryResult * @see com.zhenjw.common.QueryResult * @throws DaoException */ public QueryResult queryByHql(String queryCount,String queryData,int pageNo,int pageSize,List params) { QueryResult result=new QueryResult(); logger.debug("queryByHql \n queryCount="+queryCount+" \n queryData="+queryData+" \n pageNo ="+pageNo+" \n pageSize"+pageSize); this.writeLogger(null, params); Session session=null; try{ session=this.getSession(); int totalRow=this.getRowCountNum(session.createQuery(queryCount).list() ); result.setTotalRow(totalRow); result.setPageSize(pageSize); int totalPage=result.getPageNo(); if(totalPage<pageNo) pageNo=totalPage; result.setPageNo(pageNo); //查询数据 Query query=session.createQuery(queryData); this.setParamters(params, query); this.setTurnPageParam(pageNo, pageSize, query); result.setDataList(query.list()); }catch(HibernateException e) { this.haveHibernateException("basedao.queryByHql.error", e); }finally { this.closeSession(session); } return result; } /** * 功能:查询数据 * @param queryData 查询数据的SQL语句 * @return List * @throws DaoException */ public List queryBySql(String queryData)throws DaoException { return this.queryBySql(queryData, null); } /** * 功能:查询数据 * @param queryData 查询数据的SQL语句 * @return List * @throws DaoException */ public List queryBySql(StringBuilder queryData)throws DaoException { return this.queryBySql(queryData, null); } /** * 功能:查询数据 * @param queryData 查询数据的SQL语句 * @param params 参数 * @return List * @throws DaoException */ public List queryBySql(String queryData,List params)throws DaoException { logger.debug(" queryBySql queryData="+queryData); this.writeLogger(null, params); List result=null; Session session=null; try{ session=this.getSession(); SQLQuery query=session.createSQLQuery(queryData); this.setParamters(params, query); result=query.list(); }catch(HibernateException e) { this.haveHibernateException("basedao.queryBySql.error", e); }finally { this.closeSession(session); } return result; } /** * 功能:查询数据 * @param queryData 查询数据的SQL语句 * @param params 参数 * @return List * @throws DaoException */ public List queryBySql(StringBuilder queryData,List params)throws DaoException { return this.queryBySql(queryData.toString(), params); } /** * 功能:查询数据 * @param queryData 查询数据的HQL语句 * @return List * @throws DaoException */ public List queryByHql(String queryData)throws DaoException { return this.queryByHql(queryData, null); } /** * 功能:查询数据 * @param queryData 查询数据的HQL语句 * @return List * @throws DaoException */ public List queryByHql(StringBuilder queryData)throws DaoException { return this.queryByHql(queryData, null); } /** * 功能:查询数据 * @param queryData 查询数据的HQL语句 * @param params 参数 * @return List * @throws DaoException */ public List queryByHql(String queryData,List params)throws DaoException { logger.debug(" queryByHql queryData="+queryData); this.writeLogger(null, params); List result=null; Session session=null; try{ session=this.getSession(); Query query=session.createQuery(queryData); this.setParamters(params, query); result=query.list(); }catch(HibernateException e) { this.haveHibernateException("basedao.queryByHql.error", e); }finally { this.closeSession(session); } return result; } /** * 功能:查询数据 * @param queryData 查询数据的HQL语句 * @param params 参数 * @return List * @throws DaoException */ public List queryByHql(StringBuilder queryData,List params)throws DaoException { return this.queryByHql(queryData.toString(), params); } /** * 功能:执行更新数据的SQL语句 * @param updataSql SQL语句 * @throws DaoException */ public void updateBySql(StringBuilder updataSql)throws DaoException { this.updateBySql(updataSql,null); } /** * 功能:执行更新数据的SQL语句 * @param updataSql SQL语句 * @param params 参数 * @throws DaoException */ public void updateBySql(StringBuilder updataSql,List params)throws DaoException { this.updateBySql(updataSql.toString(), params); } /** * 功能:执行更新数据的SQL语句 * @param updataSql SQL语句 * @throws DaoException */ public void updateBySql(String updataSql)throws DaoException { this.updateBySql(updataSql,null); } /** * 功能:执行更新数据的SQL语句 * @param updataSql SQL语句 * @throws DaoException */ public void updateBySql(String updataSql,List params)throws DaoException { logger.debug(" updateBySql updataSql="+updataSql); this.writeLogger(null, params); Session session=null; Transaction tr=null; boolean commitFlag=false; try{ session=this.getSession(); tr=session.beginTransaction(); tr.begin(); SQLQuery query=session.createSQLQuery(updataSql); this.setParamters(params, query); query.executeUpdate(); tr.commit(); commitFlag=true; }catch(HibernateException e) { this.haveHibernateException("basedao.updateBySql.error", e); }finally { this.closeSession(session, tr, commitFlag); } } /** * 功能:执行更新数据的 HQL语句 * @param updataSql HQL语句 * @throws DaoException */ public void updateByHql(StringBuilder updataHql)throws DaoException { this.updateByHql(updataHql, null); } public void updateByHql(StringBuilder updataHql,List params)throws DaoException { this.updateByHql(updataHql.toString(), params); } public void updateByHql(String updataHql)throws DaoException { this.updateByHql(updataHql, null); } public void updateByHql(String updataHql,List params)throws DaoException { logger.debug(" updateByHql updataHql="+updataHql); this.writeLogger(null, params); Session session=null; Transaction tr=null; boolean commitFlag=false; try{ session=this.getSession(); tr=session.beginTransaction(); tr.begin(); Query query=session.createQuery(updataHql); this.setParamters(params, query); query.executeUpdate(); tr.commit(); commitFlag=true; }catch(HibernateException e) { this.haveHibernateException("basedao.updateByHql.error", e); }finally { this.closeSession(session, tr, commitFlag); } } public void setParamters(List params,SQLQuery query) { if(params!=null) for(int i=0;i<params.size();i++) { this.setParamter(i,params.get(i), query); } } public void setParamters(List params,Query query) { if(params!=null) for(int i=0;i<params.size();i++) { this.setParamter(i,params.get(i), query); } } public void setParamter(int i,Object o ,SQLQuery query) { if(o instanceof java.util.Date) { query.setTimestamp(i, (java.util.Date)o); }else { query.setParameter(i,o); } } public void setParamter(int i,Object o ,Query query) { if(o instanceof java.util.Date) { query.setTimestamp(i, (java.util.Date)o); }else { query.setParameter(i,o); } } public void setTurnPageParam(int pageNo,int pageSize,SQLQuery query) { if(pageNo>0&&pageSize>0) { query.setFirstResult((pageNo-1)*pageSize); query.setMaxResults(pageSize); } } public void setTurnPageParam(int pageNo,int pageSize,Query query) { if(pageNo>0&&pageSize>0) { query.setFirstResult((pageNo-1)*pageSize); query.setMaxResults(pageSize); } } protected int getRowCountNum(List list) { int result=0; try{ result=Integer.parseInt( list.get(0).toString()); }catch(Exception e) { } return result; } protected void writeLogger(String messageName,List params) { if(messageName==null) messageName=" params = "; StringBuilder paramsB=new StringBuilder(); if(params!=null) { for(int i=0;i<params.size();i++) { if(i>0) paramsB.append(","); paramsB.append(this.getParamValue(params.get(i))); } logger.debug(messageName+" ="+paramsB.toString()); }else { logger.debug(messageName+" is null "); } } protected Object getParamValue(Object o) { Object result=o; if(o instanceof java.util.Date ) { result=this.fomateDate((java.util.Date)o); } return result; } protected String fomateDate(Date date) { String result=""; try{ java.text.SimpleDateFormat formate=new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); result=formate.format(date); }catch(Exception e) { logger.debug(e.getMessage(), e); } return result; } public static void main(String []args) { Date date=null; java.text.SimpleDateFormat formate=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(formate.format(date) ); } public Session getSession() { return HibernateSessionFactory.getSession(); } public void closeSession(Session session) { if(session!=null&&session.isOpen()) session.close(); session=null; } public void closeSession(Session session,Transaction tr,boolean commitFlag) { if(!commitFlag&&tr!=null) { try{ tr.rollback(); }catch(Exception e) { logger.debug(e.getMessage(),e); } } this.closeSession(session); } public void haveHibernateException(String key,HibernateException e) { new DaoException(logger,key, e); } }
- dao.rar (3.6 KB)
- 下载次数: 18
相关推荐
Struts2、Hibernate、Spring整合的泛型DAO (本人评价: 代码开发效率提高30% 代码出错率减少70%) 对于大多数开发人员,系统中的每个 DAO 编写几乎相同的代码到目前为止已经成为一种习惯。虽然所有人都将这种重复...
DAO(Data Access Objects)是微软在早期开发的一种用于访问数据库的应用程序编程接口(API),它在Visual Basic 6和早期的Microsoft Office版本中被广泛使用。DAO 3.5是该技术的一个特定版本,适用于32位操作系统。...
DAO(Data Access Objects)是微软在早期开发的一种数据访问接口,主要用于访问Microsoft Jet数据库引擎,如Access数据库。DAO 3.5是DAO的一个版本,它在Windows操作系统中广泛使用,尤其是在16位和32位应用程序中。...
DAO Jet数据库引擎是微软在早期开发的用于访问和管理Access数据库的一种组件,它与Jet数据库引擎密切相关。Jet引擎是Microsoft Windows操作系统中一个内置的数据库管理系统,主要用于支持Access数据库和其他使用Jet...
标题中的“系统配置文件 dao350和dao360”指的是Microsoft Office系统中的数据库访问对象(DAO,Database Access Objects)版本350和360。DAO是Microsoft Jet数据库引擎的一部分,主要用于与Access数据库或其他Jet...
DAO(Data Access Objects)是微软在早期开发的一种数据库访问技术,它是Microsoft Jet数据库引擎的一部分,主要用于与Access数据库的交互。DAO3.5是DAO的一个特定版本,它在Windows 95和Windows 98时代非常流行,但...
DAO(Data Access Objects)是微软在早期开发的一种数据访问接口,主要用于访问Microsoft Jet数据库引擎,它是Access数据库的基础。Jet数据库引擎是微软开发的一种强大的、快速的数据库管理工具,尤其适用于小型到...
DAO(Data Access Object)封装包是软件开发中用于处理数据访问层的一种设计模式。它将数据库操作与业务逻辑分离,使得代码更易于维护和测试。在这个"dao封装包"中,我们通常会找到一系列与数据库交互的接口和实现类...
DAO(Data Access Object)模式是软件开发中常用的设计模式之一,主要用于数据库操作的抽象和封装。DAO 1.0 源代码的提供允许我们深入理解这一模式在实际项目中的应用。下面将详细介绍DAO模式的核心概念、作用以及...
**JSP的DAO模式留言板详解** 在Web开发中,DAO(Data Access Object)模式是一种常见的设计模式,用于封装对数据库的操作,将业务逻辑与数据访问层分离,提高代码的可维护性和可测试性。本教程将详细介绍如何使用...
在C#编程中,"通用Dao层"是一个常见的设计模式,用于封装数据库操作,使得业务逻辑层能够专注于处理业务规则,而无需关心底层数据访问的细节。本篇将重点探讨如何利用C#的特性(Attribute)标签来实现这一目标,同时...
**DAO详解** DAO(Data Access Object)模式是软件设计中的一种模式,主要用于数据库访问层的抽象,它将数据操作逻辑封装在对象中,使得业务逻辑层与数据存储层解耦,提高了代码的可复用性和可维护性。本文将深入...
DAO(Data Access Object)模式是一种常见的软件设计模式,它用于封装对数据库的访问操作,将数据访问层与业务逻辑层分离,从而提高系统的可维护性和可扩展性。在这个"用DAO实现的用户登录系统"中,我们可以看到以下...
在.NET开发环境中,自动生成实体类和DAO(Data Access Object)是提高开发效率的重要手段,尤其是在处理大量数据库交互时。这个".net 自动生成实体类、DAO工具"是一个实用的小型工具,能够帮助开发者快速构建数据...
本文将深入探讨如何结合这两种技术实现一个通用的DAO(Data Access Object)设计模式。 首先,我们来看“泛型”。泛型是Java 5引入的新特性,它允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和...
DAO(Data Access Object)设计模式是一种在软件工程中用于封装对数据库访问的模式,它将业务逻辑和数据访问逻辑分离,提高代码的可重用性和可测试性。在这个基于DAO设计模式的新闻发布系统中,我们可以深入探讨以下...
DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于数据库操作的抽象和封装。在Java开发中,DAO模式被广泛应用于处理与数据库的交互,以提高代码的可维护性和可测试性。本篇文章将深入探讨DAO...
DAO(Data Access Object)模式是一种设计模式,常用于在应用程序和数据库之间提供一个抽象层,以实现数据访问的独立性。Oracle则是一款强大的关系型数据库管理系统,广泛应用于大型企业的核心系统。 首先,我们来...
DAO(Data Access Object)设计模式是软件开发中一种常见的用于处理数据访问的模式,它将业务逻辑与数据访问逻辑分离,使得代码结构更加清晰,更易于维护和测试。在Java开发中,DAO模式广泛应用于数据库操作,为应用...