参考链接:http://i.cnblogs.com/EditPosts.aspx?opt=1

简介

commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选。
    API介绍:
         org.apache.commons.dbutils.QueryRunner --- 核心
         org.apache.commons.dbutils.ResultSetHandler
    工具类
         org.apache.commons.dbutils.DbUtils。

DbUtils类

DbUtils:提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。主要方法如下:

public static void close(...) throws java.sql.SQLException:DbUtils类提供了三个重载的关闭方法。这些方法检查所提供的参数是不是NULL,如果不是的话,它们就关闭Connection、Statement和ResultSet。

public static void closeQuietly(...):这一类方法不仅能在Connection、Statement和ResultSet为NULL情况下关闭,还能隐藏一些在程序中抛出的SQLException。

public static void commitAndCloseQuietly(Connection conn):用来提交连接,然后关闭连接,并且在关闭连接时不抛出SQL异常。

public static boolean loadDriver(java.lang.String driverClassName):这一方法装载并注册JDBC驱动程序,如果成功就返回true。使用该方法,你不需要捕捉这个异常ClassNotFoundException。

QueryRunner类

该类简化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减小编码量。

QueryRunner类提供了两个构造方法:

默认的构造方法

需要一个javax.sql.DataSource来作参数的构造方法。

QueryRunner类的主要方法

更新操作

public int update(Connection conn, String sql, Object...params)

public int update(String sql,Object...params)

查询操作

public Object query(Connection conn, String sql, ResultSetHandler rsh, Object...params)

public Object query(String sql, ResultSetHandler rsh, Object...params)

ResultSetHandler接口

该接口用于处理java.sql.ResultSet,将数据按要求转换为另一种形式。

ResultSetHandler接口提供了一个单独的方法:Object handle(java.sql.ResultSet.rs)。

ResultSetHandler接口的实现类

ArrayHandler:把结果集中的第一行数据转换成对象数组。

ArrayListHandler:把结果集中的每一行数据都转换成一个对象数组,再存放到List中。

BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。

BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。

MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。

MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。

ColumnListHandler:将结果集中某一列的数据存放到List中。

KeyedHandler(name):将结果集中的每一行数据都封装到一个Map里(List),再把这些map再存到一个map里,其key为指定的列。

ScalarHandler:获取结果集中第一行数据指定列的值,常用来进行单值查询

如:Long long = (Long)queryRunner.query("select count(*) from account",new ScalarHandler(1));//进行单值查询


-------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------

最新文章

  1. 用ffmpeg合并音频文件
  2. Arcgis10安装说明
  3. redis——持久化篇
  4. JS自动格式化输入的数字/千位分隔符VIEW:858
  5. Gaussian Discriminant Analysis
  6. linux inode已满解决方法
  7. 深入浅出Node.js (8) - 构建Web应用
  8. 开始学javascript基础
  9. js操作cookie,js判断浏览器属性,
  10. USACO 3.4 American Heritage
  11. MySql存储过程—7、游标(Cursor)
  12. self-question
  13. node压力测试
  14. struts2 之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】
  15. html:布局class名和其他class名个人整理总结
  16. 关于分布式uuid的一点设想
  17. 选择排序:直接选择排序&堆排序
  18. Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)
  19. C/C++的64位整型
  20. eclipse,myeclipse综合

热门文章

  1. Service的两种启动方式
  2. Swift下表和方法
  3. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
  4. GitHub---github入门
  5. 爬虫库之BeautifulSoup学习(五)
  6. 2-2和2-3基本数据类型 & 2-4基本数据类型详解 & 3-1和3-2整形字面量值及变量声
  7. 在ANGULAR6中使用Echarts的正确方式之一
  8. 文档通信(跨域-不跨域)、时时通信(websocket)、离线存储(applicationCache)、开启多线程(web worker)
  9. 骨骼动画反向动力学(IK)的实现
  10. [Xcode 实际操作]二、视图与手势-(10)UITapGestureRecognizer手势之单击