`
iloveoracle
  • 浏览: 118751 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dbutils

    博客分类:
  • java
阅读更多
    dbutils is a small set of classes designed to make working with jdbc easier. jdbc resource cleanup code is mundane, error prone work so these classes abstract out all of the cleanup tasks from your code leaving you with what you really wanted to do with jdbc in the first place: query and update data.

some of the advantages of using dbutils are:

    * no possibility for resource leaks. correct jdbc coding isn't difficult but it is time-consuming and tedious. this often leads to connection leaks that may be difficult to track down.
    * cleaner, clearer persistence code. the amount of code needed to persist data in a database is drastically reduced. the remaining code clearly expresses your intention without being cluttered with resource cleanup.
    * automatically populate javabean properties from resultsets. you don't need to manually copy column values into bean instances by calling setter methods. each row of the resultset can be represented by one fully populated bean instance.

dbutils is a very small library of classes so it won't take long to go through the javadocs for each class. the core classes/interfaces in dbutils are queryrunner and resultsethandler. you don't need to know about any other dbutils classes to benefit from using the library.

each of the provided resultsethandler implementations accept a rowprocessor to do the actual conversion of rows into objects. by default the handlers use the basicrowprocessor implementation but you can implement a custom version to plug in. probably the most common customization is to implement the tobean() method to handle custom database datatype issues.

basicrowprocessor uses a beanprocessor to convert resultset columns into javabean properties.

you can do one of the following to map these columns to bean properties:

   1. alias the column names in the sql so they match the java names: select social_sec# as socialsecuritynumber from person
   2. subclass beanprocessor and override the mapcolumnstoproperties() method to strip out the offending characters.


common dbutils是操作数据库的组件,对传统操作数据库的类进行二次封装,可以把结果集转化成list。
dbutils包括3个包:org.apache.commons.dbutilsorg.apache.commons.dbutils.handlersorg.apache.commons.dbutils.wrappersdbutils封装了对jdbc的操作,简化了jdbc操作,可以少写代码。 org.apache.commons.dbutilsdbutils 关闭链接等操作queryrunner 进行查询的操作 org.apache.commons.dbutils.handlersarrayhandler :将resultset中第一行的数据转化成对象数组arraylisthandler将resultset中所有的数据转化成list,list中存放的是object[]beanhandler :将resultset中第一行的数据转化成类对象beanlisthandler :将resultset中所有的数据转化成list,list中存放的是类对象columnlisthandler :将resultset中某一列的数据存成list,list中存放的是object对象keyedhandler :将resultset中存成映射,key为某一列对应为map。map中存放的是数据maphandler :将resultset中第一行的数据存成map映射maplisthandler :将resultset中所有的数据存成list。list中存放的是mapscalarhandler :将resultset中一条记录的其中某一列的数据存成object org.apache.commons.dbutils.wrapperssqlnullcheckedresultset :对resultset进行操作,改版里面的值stringtrimmedresultset :去除resultset中中字段的左右空格。trim()
主要方法:

dbutils类:启动类
resultsethandler接口:转换类型接口
maplisthandler类:实现类,把记录转化成list
beanlisthandler类:实现类,把记录转化成list,使记录为javabean类型的对象
qrery runner类:执行sql语句的类

jdbc关于操作数据库的类,如果我们使用完毕之后就必须关闭。而且在操作数据类里面写了大量的业务逻辑(如增删查改),当一个类业务逻辑牵涉的太多,耦合度相对比较高,结果集难以处理,当我们拿到一个resultset结果集,用while循环一个一个读出来,再转换成javabean,最后形成list,太麻烦了。而且到处都抛sqlexception,又要捕获异常。造成代码复杂,可读性差,繁琐,不易于维护,有影响代码的美观性,最重要的是互用性不高。dbutils给我们解决了一系列的问题:dbutils是一个为简化jdbc操作的小类库,轻量级封装了jdbc。会自动关闭数据库连接,从而我们不用担心数据库的资源问题 dbutils库里很多类定义业务逻辑,如果子类直接继承它, 使类的业务逻辑简单了,也减少了jdbc代码的重复问题。使代码的可读性更强,互用性更高了!dbutils的处理流程: 它通过datasource得到得到一个连接, 拿到结果集,  再通过结果集得到元数据类型, 通过反射拿到我们传入进来的对象的元数据, 再通过反射对它们进行相应的转换。生成一个bean, 如果需要对象的话,直接返回,如果是其他的我们在进行相应的处理dbutils库里面有三个最主要的类: queryrunner:通过构造方法,得到一个数据库连接,数据库的操作都是通过这个类来完成的。 resultsethandler:转换类型接口(主要把我们数据的结果集通过一系列的处理转换成java对象) resetsethandler 的实现类有很多种, 涉及数组,map javabean等, 所有的实现类都接受一个rowprocessor类型的参数来实现数据列向对象的转化。其中rowprocessor的默认实现类为 basicrowprocessor, 用户也可以自己实现rowprocessor。basicrowprocessor使用beanprocessor来完成resultset中的值向javabean的映射。前提要求列名和 bean属性名必须一致。所有的数据库结果集转换成bean,list,map都是通过他的实现类来处理的。


util是一个非常小的类包, 无需花费太多时间去阅读它的doc, 核心类(接口)为queryrunner 和resetsethandler。 resetsethandler 的实现类有很多种, 涉及数组, map , javabean, 等等, 所有的实现类都接受一个rowprocessor类型的参数来实现数据列向对象的转化。其中rowprocessor的默认实现类为 basicrowprocessor, 用户也可以自己实现rowprocessor。 basicrowprocessor使用beanprocessor来完成resultset中的值向javabean的映射。前提要求列名和bean属性名必须一致。 但是在大部分情况下,数据库的列名中常含有一个些特殊字符,这些字符在java命名规约中又不能使用,针对上述情况,有如下2种解决办法:  1)sql语句中使用as 。 如 select na#me as name;  2) 继承beanprocessor并覆盖mapcolumnstoproperties()以便跳过那些违背java命名规约的字符。 beanprocessor.java public object tobean(resultset rs class type) {              //确定column要转化成的类型,并以数组形式存储。 mapcolumntoproperties(); //组装bean并返回 createbean() {        // 依照前面数组中存储的形式,将column进行相应的转化     processcolumn()     //运用反射 设值     callsetter() }           }


 
0
3
分享到:
评论

相关推荐

    dbutils dbutils dbutils dbutils

    DBUtils 是一个非常重要的 Python 模块,专为数据库连接设计,它在 Python 的数据库应用开发中扮演着不可或缺的角色。这个模块主要目的是提供一个稳定、健壮的接口,用于管理和操作数据库连接,使得开发者能够更方便...

    python的DBUtils包

    Python的DBUtils是一个非常实用的库,主要用于增强Python标准库中的`DB-API 2.0`接口,提供了线程安全性和连接池管理等功能。DBUtils是基于PEP 249设计的,它使得数据库连接的管理和维护变得更加简单,尤其在多线程...

    commons-dbutils-1.4.jar

    《Apache Commons DBUtils详解及其在Java数据库操作中的应用》 Apache Commons DBUtils是Apache软件基金会开发的一个开源项目,它提供了一套简洁、高效且实用的工具类,用于简化Java应用程序中的数据库操作。这个...

    Dbutils 的jar包

    Dbutils 是 Apache Commons DbUtils 的简称,它是一个用于简化 Java 数据库编程的开源库。Dbutils 基于 JDBC(Java Database Connectivity),提供了一套简洁、高效且易于使用的API,帮助开发者更方便地处理数据库...

    commons-dbutils.jar.rar

    `commons-dbutils.jar.rar` 是一个包含Apache Commons DBUtils库的不同版本的压缩文件,主要用于Java应用程序中的数据库操作。DBUtils是一个实用程序库,它简化了JDBC(Java Database Connectivity)的使用,提供了...

    C3P0和DButils

    C3P0和DBUtils是两个非常重要的库,用于简化Java应用程序中的数据库操作。以下是这两个库的详细介绍: C3P0是一个开源的JDBC连接池,它的全称是Commerical-grade Connection Pooling for JDBC。C3P0-0.9.1.2.jar是...

    commons-dbutils-1.7-API文档-中文版.zip

    赠送jar包:commons-dbutils-1.7.jar; 赠送原API文档:commons-dbutils-1.7-javadoc.jar; 赠送源代码:commons-dbutils-1.7-sources.jar; 赠送Maven依赖信息文件:commons-dbutils-1.7.pom; 包含翻译后的API文档...

    commons-dbutils-1.7

    Apache Commons DbUtils是Java开发中的一个实用工具库,专门针对JDBC(Java Database Connectivity)进行优化,以提供更简洁、高效的数据库操作API。这个库在Java社区中广泛使用,因为它大大减轻了开发者处理数据库...

    commons-dbutils-1.7.jar

    《Apache Commons DBUtils详解》 Apache Commons DBUtils是一款在Java编程中广泛使用的数据库操作工具库,它的全称为“Apache Commons Database Utilities”。这个小巧且高效的库为开发者提供了方便、安全的数据库...

    commons-dbutils-1.3.zip

    Apache Commons DBUtils是一个Java库,它简化了与数据库交互的任务,是Java开发中常用的数据访问工具。这个压缩包“commons-dbutils-1.3.zip”包含的是DBUtils库的1.3版本。DBUtils库是Apache Commons项目的一部分,...

    dbutils + oracle 增删改查批量插入示例

    在IT行业中,数据库操作是日常开发中的重要环节,而`dbutils`是一个非常实用的Java数据库操作工具包,它简化了对数据库进行增删改查(CRUD)操作的过程。本示例着重介绍如何结合`dbutils`与Oracle数据库进行高效的...

    DBUtils操作数据库以及事物的管理

    ### DBUtils操作数据库及事务管理详解 #### 一、DBUtils简介 DBUtils是一个轻量级的Java数据库访问工具类库,它简化了JDBC的使用步骤,使得开发者能够更方便地进行数据库操作。相比于传统的JDBC编程方式,DBUtils...

    commons-dbutils-1.6

    Apache Commons DBUtils是Java开发中的一个实用工具库,主要用于简化JDBC(Java Database Connectivity)的使用。这个项目在1.6版本中包含了两个主要的jar文件:`commons-dbutils-1.6.jar`和`commons-dbutils-1.6-...

    commons-dbutils-1.6.jar包

    包org.apache.commons.dbutils DbUtils是一个为简化JDBC操作的小类库. 接口摘要 ResultSetHandler 将ResultSet转换为别的对象的工具. RowProcessor 将ResultSet行转换为别的对象的工具. 类摘要 BasicRowProcessor ...

    commons-dbutils-1.6.rar所有jar包

    Apache Commons DBUtils是一个Java库,它为处理数据库连接提供了简单且健壮的工具。这个压缩包文件"commons-dbutils-1.6.rar"包含了DBUtils的1.6版本,这是一个非常受欢迎的开源项目,用于简化Java数据库编程。...

    DBUtils数据库的使用

    DBUtils是Java编程环境中一个非常实用的数据库操作工具包,由Apache软件基金会提供。它基于JDBC(Java Database Connectivity)并提供了对数据库操作的简化,让开发者能够更方便、高效地进行数据存取。DBUtils的主要...

    模仿DBUtils(自己模仿DBUtils写的简易DBUtils)

    DBUtils是Apache Commons库中的一个组件,它提供了一套简单易用的数据库操作API,用于简化Java中的数据库访问。在本项目中,你将找到一个自己编写的简易DBUtils实现,虽然它不是Apache官方的DBUtils,但其设计思想和...

    python-dbutils 简单封装

    Python的dbutils模块是Apache的一个开源项目,它提供了一套用于数据库操作的工具类,能够帮助简化数据库连接和管理,提高开发效率。本教程将详细讲解如何对dbutils进行简单的封装,以更好地适应实际的Python数据库...

Global site tag (gtag.js) - Google Analytics