首页
登录 | 注册

JDBC操作的封装包——Dbutils使用入门

    相信很多人仍然在使用jdbc编程,尽管出现了很多像hibernate等这样的功能强大的数据持久层框架。最近在apache的网站上看到了一个对 jdbc进行简单封装的组件包Dbutils,感觉挺好,向那些和我一样仍在使用jdbc编程的developer推荐一下。第一次翻译,水平有限,不足 之处,尽请海涵。

原文地址:http://commons.apache.org/dbutils/

译文:

Dbutils 是一组类的集合,这组类可以使使用JDBC工作更加容易。Jdbc的资源清理代码是如此不堪,且容易出错,所以这些类从你的代码中分离出全部的清理任务,留给你的只有你想用jdbc做的工作:查询与更新。

使用dbutils的好处是:

·不可能资源泄露。正确的jdbc代码编写不困难,但是却十分的费时和繁琐。这经常导致连接泄露,而这又是很难跟踪的。

·精简代码,精简持久化代码。需要将数据持久化到数据库的这些代码锐减。没有了混乱的清理资源的代码,剩下的能很清楚的表达你的意思。

·从返回的结果集ResultSets,能自动填充javabean的属性。你不需要通过调用javabean的setter方法手工复制列的值到bean的实例中。结果集的每一行都能够被完全被bean的实例表达。

Dbutils 被设计为:

·精巧的-你能够在很短的时间内理解所有的包。

·透明的-dbutils不在幕后做任何魔术。你给他一次查询,它执行这次查询,然后为你做查询后的清理工作。

·快速的-你不需要创造百万个临时对象与dbutils一起工作。

Dbutils 不是:

·对象/关系桥梁-已经有大量的好的O/R工具。Dbutils是为使用jdbc的开发者准备的。

·数据访问对象(DAO)框架 – 但是dbutils能够被用来建立DAO框架。

·普通数据库对象比如表、列或者关键字的面向对象的抽象。

·任何一种重量级框架 – 这里的目标是一个直接而且容易使用的JDBC帮助库。

Dbutils:jdbc通用组件例子
本页提供了一些例子来展示dbutils可能如何被使用


基本使用
 
Dbutils是一个很 小巧的类库,所以你不需要花很长时间来熟悉每个类的帮助文档。在dbutils中的核心类/接口是QueryRunner和 ResultSetHandler。你不需要了解任何其它dbutils 类就能通过使用这个类库获益。下面这个例子演示了如何使用这些类。
// Create a ResultSetHandler implementation to convert the
// first row into an Object[].
ResultSetHandler h = new ResultSetHandler() {
    public Object handle(ResultSet rs) throws SQLException {
        if (!rs.next()) {
            return null;
        }
   
        ResultSetMetaData meta = rs.getMetaData();
        int cols = meta.getColumnCount();
        Object[] result = new Object[cols];
 
        for (int i = 0; i < cols; i++) {
            result[i] = rs.getObject(i + 1);
        }
 
        return result;
    }
};
 
// Create a QueryRunner that will use connections from
// the given DataSource
QueryRunner run = new QueryRunner(dataSource);
 
// Execute the query and get the results back from the handler
Object[] result = (Object[]) run.query(
    "SELECT * FROM Person WHERE name=?", "John Doe", h);
 
你也可以使用java.sql.Connection对象代替Datasource来处理上面例子中的查询,需要注意的是在这个例子中你需要显示关闭Connection
ResultSetHandler h = ... // Define a handler the same as above example
 
// No DataSource so we must handle Connections manually
QueryRunner run = new QueryRunner();
 
Connection conn = ... // open a connection
try{
    Object[] result = (Object[]) run.query(
        conn, "SELECT * FROM Person WHERE name=?", "John Doe", h);
       // do something with the result
      
} finally {
    // Use this helper method so we don't have to check for null
    DbUtils.close(conn);
}


相关文章

  • 基础入门之基于MSSQL数据源制作可视化·技巧整理
    一.连接数据源 登录OurwayBI大数据分析工具后,点击"+创建数据",在弹窗中依次填入数据源名称.数据源类型(MSSQL),点击生成后将弹出"数据连接属性"窗口,如下图: 填入以上信息后,需点击测 ...
  • oracle10 版本 jdbc 驱动中 OraclePreparedStatement 执行excuteQuery 时返回的ResultSet的日期类型字段使用getObject 获得对象时,返回的是 java.sql.Date .  这 ...
  • Presto入门介绍
    Presto基本认识 查询引擎 和大家熟悉的Mysql相比:首先Mysql是一个数据库,具有存储和计算分析能力,而Presto只有计算分析能力:其次数据量方面,Mysql作为传统单点关系型数据库不能满足当前大数据量的需求,于是有各种大数据的 ...
  • Neo4j入门点滴(四):Cypher查询优化
     首先,还是老样子,清楚当前数据库中所有的内容,干干净净开始学习新的一章. match (n)-[r]-(n1) delete r,n,n1 match (n) delete n   接下来,还要使用第二篇博文中的人物和联系: CREATE ...
  • C/C++拾遗(二十六):MFC-文件操作的那些事儿
          今天状态不错,下午继续学习MFC的文件操作章节.自己以前经常使用C,因此最熟悉的当然是C的文件操作命令了:不过今天要学习的是在图形MFC下进行文件操作.在学习MFC为我们提供的文件操作类之前,首先简单回顾下C语言文件操作的知识点 ...
  • 下班后,运动1小时,吃着西瓜,编着代码,慢慢的等待着世界杯~~~~~ 整理一下编译MYSQL源码中遇到的新工具以及DEBUG工具 简单的介绍一下,CMake(         cmake - Cross-Platform Makefile ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.012 s.
京ICP备10005923号