`
donyee
  • 浏览: 33709 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

我实现的一个dao助手类

阅读更多

 

这个类蛮实用的,我在几个项目中都使用。接口如下:

public interface DaoHelper {

    boolean add(String sql, Object... args);

    boolean add(String sql, Connection conn, Object... args);

    int update(String sql, Object... args);

    int update(String sql, Connection conn, Object... args);

    boolean delete(String sql, Object... args);

    boolean delete(String sql, Connection conn, Object... args);

    Object getObject(String sql, Class obj, Object... args);

    Object getObject(String sql, Connection conn, Class obj, Object... args);

    List<Object> getList(String sql, Class obj, Object... args);

    String queryForString(String sql, Object... args);

    Long queryForLong(String sql, Object... args);

    Boolean queryForBoolean(String sql, Object... args);

    Connection getConn ();

    void returnConnection(Connection conn);

    void rollBack(Connection conn);

}

<!---->(1)       <!---->第一个 add 方法用来执行 insert 语句,并且提交事务; sql 为数据库语句, args 为数据库参数,要和数据库语句里的“?”对应。

<!---->(2)       <!---->第二个 add 方法多了一个 Connetion 参数,该方法将使用这个 Conn 来创建 PreparedStatement ,但是执行结束后不提交,需要手动提交。

<!---->(3)       <!---->其他 update delete 同上

<!---->(4)       <!---->  getObject 方法返回一个 bean ,把 ResultSet 转化为 Bean bean 的属性必须和数据库列名称相同。

<!---->(5)       <!---->  getList 方法返回一个 List ,将 ResultSet 处理为一个 List 返回

<!---->(6)       <!---->  queryForString queryForLong queryForBoolean 将分别返回 String Long Boolean 结果。

实现我使用了 apache common 里的 dbutils 包,另外由 DataSource 提供数据库 Connection ,我使用的是 c3p0 的实现,用 spring bean set 注入的。代码参考附件。

 

PS: 抛砖引玉,大家要是有更好的方法的话,可以拿出来共享一下,提高代码质量、加快开发速度。

 

  • daohelper.rar (1.8 KB)
  • 描述: DaoHelper.java,DaoHelperImpl.java
  • 下载次数: 405
分享到:
评论
14 楼 tongjian 2008-10-08  
用spring提供的jdbc支持就好了阿。感觉比你写的这个工具类使用还简单呢!
13 楼 donyee 2008-10-07  
yuxianghong 写道

以前看过这个类似的结构。

这个轮子蛮实用的。
我这有一半是原创的
有个关键功能就是jdbc参数设置是从apache的dbutil源码学来的
ResultSet--Bean反射是用org.apache.commons.dbutils.BeanProcessor处理的

12 楼 yuxianghong 2008-10-07  
以前看过这个类似的结构。
11 楼 donyee 2008-10-06  
Ethan 写道

donyee 写道Ethan 写道
个人认为写这样的Util类,意义不大。很显然然你只是能够运行,却没有对资源的管理,资源管理居然和操作行为耦合在一起了!建议还是先把Java EE的层次结构弄清楚,这样设计出来的东西不会出现这么低级的失误!

竟然没有看懂,管理什么资源啊,缓存查询结果吗?这些没有

服了你了!难道你使用数据库仅仅是连上就用的吗?不考虑Connection资源的管理?怎么获取,怎么管理,什么时候释放?还有就是事务的管理,这都需要一个系统的而且严谨的架构来管理,并不是随便写个Util类就能够搞定的。其次,Util类也是一个程序中最难以管控的东西,谁知道你写了这个类?是不是你写一个Util类就要广播一次啊!没有听到的同事想实现这么一个功能的话很有可能自己又一拍大腿写一个重复的出来啊!
所以建议,在Framework的选择上多花功夫,不是能用就行了!


实现中用DataSource来获取连接的,我是用c3po来做的
事务有两者方式:参数有Connection的是调用者自己控制;参数无Connection的话,操作结束就提交事务
这些我都说明了啊!
10 楼 Ethan 2008-10-06  
donyee 写道
Ethan 写道

个人认为写这样的Util类,意义不大。很显然然你只是能够运行,却没有对资源的管理,资源管理居然和操作行为耦合在一起了!建议还是先把Java EE的层次结构弄清楚,这样设计出来的东西不会出现这么低级的失误!

竟然没有看懂,管理什么资源啊,缓存查询结果吗?这些没有


服了你了!难道你使用数据库仅仅是连上就用的吗?不考虑Connection资源的管理?怎么获取,怎么管理,什么时候释放?还有就是事务的管理,这都需要一个系统的而且严谨的架构来管理,并不是随便写个Util类就能够搞定的。其次,Util类也是一个程序中最难以管控的东西,谁知道你写了这个类?是不是你写一个Util类就要广播一次啊!没有听到的同事想实现这么一个功能的话很有可能自己又一拍大腿写一个重复的出来啊!
所以建议,在Framework的选择上多花功夫,不是能用就行了!
9 楼 donyee 2008-09-28  
Ethan 写道

个人认为写这样的Util类,意义不大。很显然然你只是能够运行,却没有对资源的管理,资源管理居然和操作行为耦合在一起了!建议还是先把Java EE的层次结构弄清楚,这样设计出来的东西不会出现这么低级的失误!

竟然没有看懂,管理什么资源啊,缓存查询结果吗?这些没有
8 楼 Ethan 2008-09-14  
个人认为写这样的Util类,意义不大。很显然然你只是能够运行,却没有对资源的管理,资源管理居然和操作行为耦合在一起了!建议还是先把Java EE的层次结构弄清楚,这样设计出来的东西不会出现这么低级的失误!
7 楼 mycybyb 2008-09-12  
自己也实现了个类似的东东
6 楼 aninfeel 2008-09-08  
org.apache.commons.dbutils.BeanProcessor,真是好东西。我还一直用beanutil
5 楼 stworthy 2008-09-08  
异常都给你拦截了,只是简单的printStackTrace,对调用者不负责任。
4 楼 donyee 2008-09-08  
没有IBATIS那么复杂的,
max什么的没有考虑到。
3 楼 rainerWJY 2008-09-07  
你不设skip和max..
数据量稍微上去点你就得破产了。。
2 楼 readythink 2008-09-07  
下载来看看,支持交流~!
1 楼 tenderghost 2008-09-07  
这个不是和iBATIS很像?SQL Map

相关推荐

    初步认识JAVA DAO设计模式

    DAO模式的核心思想是创建一个专门的接口或抽象类,用于执行对数据源的操作,这样业务组件就可以通过调用DAO接口来与数据库或其他数据存储进行交互,而无需直接了解这些底层的实现细节。 在J2EE环境中,DAO模式特别...

    自动生成mysql持久层dao,实体类及映射文件mapper

    本压缩包"mysql_generator"正是提供了这样一个功能,它能帮助我们自动生成MySQL的持久层DAO(Data Access Object)、实体类以及映射文件Mapper。 首先,我们需要了解DAO模式。DAO模式是一种常用的设计模式,它的...

    代码生成器实现的Entity,Dao,Service,Controller,JSP神器(含代码附件)

    Entity类是数据库模型的映射,通常对应数据库中的一个表。代码生成器会根据数据库表结构自动创建实体类,包括属性(字段)及其数据类型,以及getter和setter方法。这样开发者无需手动编写这些基础代码,可以更专注...

    gen工具生产java类和Dao,以及Mapper

    实体类是代表数据库表中的一个记录,它的属性对应于表的列,方法则对应于对这些数据的操作。通常,我们手动创建这些类,为每个字段定义属性,并添加getter和setter方法。然而,gen工具能够根据数据库表结构自动创建...

    mybatis实体类,dao层逆向生成工具

    MyBatis Generator(MBG)是一个强大的工具,它可以自动从数据库中读取表信息,然后生成Java源代码,这些源代码包括了实体类、Mapper接口和XML配置文件,以及DAO实现类。这极大地减少了开发者的工作量,使他们能更...

    mybatis_genertor逆向工程自动生成pojo dao层等类

    3. **生成DAO接口和实现类**:MBG会创建一个DAO接口,包含CRUD(Create、Read、Update、Delete)操作,同时生成该接口的实现类,实现类中包含了对Mapper接口的调用。 4. **创建Mapper接口和XML配置**:MBG会为每个...

    DAO模式(个人找的资料)

    STRUTS框架是一个MVC(Model-View-Controller)架构,通常与DAO模式结合使用,以实现业务逻辑与数据访问的分离。在描述中提到的场景中,开发者在处理数据持久化时,决定采用DAO模式来提高代码的可维护性和可扩展性。...

    mybatis映射文件xml+bean+dao自动构建

    在Java开发领域,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射。本文将深入探讨“mybatis映射文件xml+bean+dao自动构建”的主题,以及如何利用代码生成工具来提高开发效率。 首先,...

    一键生成java三层代码、数据库设计文档、接口对接文档(dao、entity、mapper、service、controller)

    它允许开发者快速构建一个符合标准的Java Web应用程序结构,减少了手动编写大量重复代码的时间,使开发者能够更专注于业务逻辑和创新。 首先,让我们深入理解这个工具的核心组成部分: 1. **Java三层架构**:这是...

    Android代码-基于安卓平台的114生活助手系统的设计与实现

    我想此刻你大概也能猜到了,这是一个软件工程专业本科狗的毕设项目。因此从某种意义上来说这个项目没有任何价值和意义,至少对大部分人来说是这样的。但是作为一个历经学校繁琐复杂毕设过程的本科狗来说,我清楚的...

    自动生成实体类-蛋蛋程序员助手

    "自动生成实体类-蛋蛋程序员助手"是一个工具,它旨在帮助程序员简化编码工作,通过自动化的方式生成实体类,以及其他类型的代码,如接口、服务、控制器等。下面我们将深入探讨这个主题。 首先,实体类是面向对象...

    mybatis反向生成代码工具(包含service,serviceImpl,dao,entity,daoImpl)

    3. **DAO接口和实现类生成**:基于Mapper XML文件,工具会生成DAO接口,以及实现该接口的DAOImpl类。这样,开发者只需在Service层调用这些接口,就能执行数据库操作。 4. **Service和ServiceImpl生成**:工具还会...

    美女桌面助手vb+access

    【标题】"美女桌面助手vb+access"是一个基于Visual Basic(VB)开发的个人事务管理软件,结合了Access数据库来存储用户数据。这个程序设计得既实用又具有趣味性,尤其适合初学者作为学习VB和Access数据库应用的案例...

    自动运行生成辅助包和类

    总结来说,“自动运行生成辅助包和类”的工具是Java Web开发中的高效助手,结合Java 8和Maven的强大功能,可以快速创建出DAO、Service和Controller层,从而简化开发过程。通过理解这个工具的工作原理,开发者可以更...

    mybatis实体类等生成工具

    MyBatis是一个流行的Java持久层框架,它简化了与数据库交互的过程,提供了强大的映射功能。在开发过程中,创建实体类、DAO(Data Access Object)接口以及Mapper XML文件是常见的任务,这些工作既繁琐又容易出错。...

    java类与对象的应用

    在这个例子中,`Student`类有两个属性:`name`和`age`,一个构造器用于初始化对象,以及一个`study`方法代表学生的学习行为。 接下来,我们需要创建类的实例,即对象。在Java中,我们通过`new`关键字和类的构造器来...

    mybatis带有ui操作的自动生成工具,可以自己配置文件

    MyBatis是一个强大的Java持久层框架,它允许开发者将SQL语句直接写在XML映射文件中,提供了灵活的数据访问接口。在这个自动生成工具中,它集成了...对于经常使用MyBatis的开发者来说,这样的工具无疑是一个宝贵的助手。

    mybatis生成工具.zip

    同时,MBG还会生成一个实现了DAO接口的类,这个类提供了具体的数据库操作实现。 在Entity层,MBG会创建一个Java类,这个类代表数据库中的一个表,包含了表的所有字段作为类的属性,并且每个属性都有对应的getter和...

    CodeSmith快速编写类文件

    例如,如果你正在构建一个基于数据库的应用,你可以通过CodeSmith轻松地生成ADO.NET的数据访问对象(DAO)或者实体类,这样就无需手动编写每一个表对应的类。 使用CodeSmith,你可以定义模板来处理以下常见任务: 1...

Global site tag (gtag.js) - Google Analytics