Apache Commons DbUtils工具包使用介绍

一、介绍

DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是在JDBC的基础上做了一层封装,主要是对结果集的封装,可以直接将查询出来的结果集封装成JavaBean,旨在简化JDBC代码混乱与重复。

JDBC代码开发,存在很多难点:
1)操作过程复杂,代码操作一个模式,大量的重复。
2)结果集难以处理。
3)到处都强制检查SQLException,影响代码的美观和可读性。

二、熟悉DBUtils

在使用DBUtils之前,应该注意一些问题:
1)DBUtils是JDBC的简单封装,可以和JDBC混合使用。
2)DBUtils对结果集自动封装为JavaBean是有着苛刻要求的:
必须满足JavaBean的规范;
其次Bean的getter与setter方法的名字与结果集的列名必须一一对应;
不要求JavaBean的私有成员与表结果集列名一一对应。
3)DBUtils可以将结果集封装为各种类型
主要有:Bean/List<Bean>,Map/List<Map>/Map<Map>,数组/List<数组>,列/List<列>,这些类型。

对于Map<Map>的类型使用KeyedHandler作为结果集处理器,内层的Map是“列名-值"对,外层的Map是“主键-内层Map的引用”,但此处的主键不一定就是数据库的主键,可以随意指定。
4)DBUtils执行插入操作的时候,无法返回自增主键,这是一个很严重的问题,当然不能怪DBUtils,可以通过变通的方法来实现,比如在MySQL中,执行完了一个插入SQL后,接着执行SELECT LAST_INSERT_ID()语句,就可以获取到自增主键。
5)DBUtils的性能和JDBC性能是一样,测试过程中没发现性能损失,拥有了很高性能的同时,而不失JDBC的灵活性。
6)对于JavaBean的成员类型定义,有一条原则那就是:尽可能使用包装类型,而不要使用基本类型。

三、API介绍

1、org.apache.commons.dbutils包
DbUtils:一个为简化JDBC操作的小类库
AbstractQueryRunner:是抽象类,QueryRunner和AsyncQueryRunner类的基类。
AsyncQueryRunner:可插拔的方式执行SQL查询,处理结果集。是线程安全的类。
BaseResultSetHandler:把结果集转换成其它对象的扩展。
BeanProcessor:BeanProcessor匹配列名到Bean属性名,并转换结果集列到Bean对象的属性中。
Dbutils:一个JDBC辅助工具集合。
GenerousBeanProcessor:提供了从数据库列名到JavaBean属性之间的智能匹配。
ProxyFactory:产生JDBC接口的代理实现。
QueryLoader:属性文件加载器,主要用于加载属性文件中的SQL到内存中。
QueryRunner:使用可插拔的策略执行SQL查询并处理结果集。
ResultSetHandler:把ResultSet转换为别的对象的工具。
ResultSetIterator:包装结果集为一个迭代器。
RowProcessor:将ResultSet行转换为别的对象的工具。

2、org.apache.commons.dbutils.handlers包
AbstractKeyedHandler:KeyedHandler的抽象类。
AbstractListHandler:简化ResultSetHandler类开发的抽象类,把结果集转换成List。
ArrayHandler:把结果集中的第一行数据转成对象数组。
ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
BeanMapHandler:实现了Bean返回Map集合。结果集所有的行都会转换成Bean,并根据指定的Key存储到Map中。
ColumnListHandler:将结果集中某一列的数据存放到List中。
KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。

3、org.apache.commons.dbutils.wrappers包
SqlNullCheckedResultSet:在每个getXXX方法上检查SQL NULL值的ResultSet包装类。
StringTrimmedResultSet:删除结果集中字符串前后空格的ResultSet包装类。

四、重要类详述

1、DbUtils类

DbUtils提供如关闭连接、装载JDBC驱动程序等常规工作的工具类,里面的所有方法都是静态的。
主要方法如下:
1)public static void close(...) throws SQLException
DbUtils类提供了三个重载的close方法。这些方法检查所提供的参数是不是NULL,如果为空,就关闭Connection、Statement和ResultSet。
2)public static void closeQuietly(...)
bUtils类提供了四个重载的closeQuietly方法。这一类方法不仅能在Connection、Statement和ResultSet为NULL情况下避免关闭,还能隐藏一些在程序中抛出的SQLEeception。
3)public static void commitAndCloseQuietly(Connection conn)
在连接内提交SQL,然后关闭连接,并且在关闭连接时不抛出SQL异常。
4)public static boolean loadDriver(String driverClassName)
此方法载入并注册JDBC驱动,如果成功就返回true,失败返回false。使用该方法,无需捕捉ClassNotFoundException异常。

2、QueryRunner类

QueryRunner类简化了SQL查询,它与ResultSetHandler组合在一起使用可完成大多数数据库操作,能够大量减少代码量。
QueryRunner类提供了两个构造方法
1)默认的构造方法
2)需要一个javax.sql.DataSource来作参数的构造方法。

3、QueryRunner类的主要方法

1)public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException
执行一个查询操作,在此查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。此方法会自行处理PreparedStatement和ResultSet的创建和关闭。
2)public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException
几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource方法中重新获得Connection。
3)public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException
执行一个不需要置换参数的查询操作。
4)public int update(Connection conn, String sql, Object[] params) throws SQLException
用来执行一个更新(插入、更新或删除)操作。
5)public int update(Connection conn, String sql) throws SQLException
用于执行一个不需要置换参数的更新操作。
6)insert插入方法
7)batch批处理方法

(0)

相关推荐

  • Apache Commons fileUpload文件上传多个示例分享

    本文通过实例来介绍如何使用commons-fileupload.jar,Apache的commons-fileupload.jar可方便的实现文件的上传功能,具体内容如下 将Apache的commons-fileupload.jar放在应用程序的WEB-INF\lib下,即可使用.下面举例介绍如何使用它的文件上传功能. 所使用的fileUpload版本为1.2,环境为Eclipse3.3+MyEclipse6.0.FileUpload 是基于 Commons IO的,所以在进入项目前先确定Com

  • commons io文件操作示例分享

    复制代码 代码如下: package com.pzq.io;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.StringReader;import java.nio.charset.Charset;import java.util.ArrayList;

  • Commons beanutils组件简介

    Commons Beanutils是Apache开源组织提供的用于操作JAVA BEAN的工具包.使用commons beanutils,我们可以很方便的对bean对象的属性进行操作.今天为大家介绍一下该包的常用方法. 1.什么是BeanUtils 程序中对javabean的操作很频繁, 所以apache提供了一套开源的api,方便对javabean的操作,即BeanUtils组件. 2.BeanUtils的作用 简化javabean的操作. 在一般的写bean组件的时候,都必须要写setter

  • JavaEE组件commons-fileupload实现文件上传、下载

    一.文件上传概述 实现Web开发中的文件上传功能,需要两步操作: 1.在Web页面中添加上传输入项 <form action="#" method="post" enctype="multipart/form-data"> <input type="file" name="filename1"/><br> <input type="file" n

  • Apache Commons fileUpload实现文件上传之一

    废话不多说了,直奔主题了. 需要两个jar包: commons-fileupload.jar Commons IO的jar包(本文使用commons-io-2.4.jar) 利用Servlet来实现文件上传. package web.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.

  • Apache Commons DbUtils工具包使用介绍

    一.介绍 DBUtils是个小巧的JDBC轻量级封装的工具包,其最核心的特性是在JDBC的基础上做了一层封装,主要是对结果集的封装,可以直接将查询出来的结果集封装成JavaBean,旨在简化JDBC代码混乱与重复. JDBC代码开发,存在很多难点: 1)操作过程复杂,代码操作一个模式,大量的重复. 2)结果集难以处理. 3)到处都强制检查SQLException,影响代码的美观和可读性. 二.熟悉DBUtils 在使用DBUtils之前,应该注意一些问题: 1)DBUtils是JDBC的简单封装

  • apache commons工具集代码详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • java学习笔记之DBUtils工具包详解

    DBUtils工具包 一.介绍 DBUtils是Apache组织开源的数据库工具类. 二.使用步骤 ①.创建QueryRunner对象 ②.调用update()方法或者query()方法执行sql语句 三.构造方法及静态方法 QueryRunner类 1.构造方法 ①.无参构造 QueryRunner qr =new QueryRunner(); 使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式 ②.有参构造 QueryRunner

  • Java常用类库Apache Commons工具类说明及使用实例详解

    Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍. 组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. Con

  • Java Druid连接池与Apache的DBUtils使用教程

    目录 Druid连接池 连接池思想 Druid连接池使用步骤 引入相关jar包 创建database.properties配置文件 编写连接池工具类 Druid连接池测试 Apache的DBUtils使用 Apache DBUtils介绍 Apache DBUtils特征 Apache DbUtils主要组成 Apache DbUtils使用步骤 综合案例 创建product表 向表中添加数据 创建实体类Product 创建ProductDao接口 创建ProductDaoImpl实现类 创建P

  • Apache commons fileupload文件上传实例讲解

    文件上传的方法主要目前有两个常用的,一个是SmartUpload,一个是Apache的Commons fileupload. 我们这里主要介绍下第二个的用法,首先要上传文件,注意几个问题: 1 form表单内,要添加空间<input type="file" name="myfile"> 2 form表单的内容格式要定义成multipart/form-data格式 3 需要类库:1 commons-io.jar 2commons-fileupload-1.

  • Apache Commons Math3探索之多项式曲线拟合实现代码

    上一篇文章我们介绍了Apache Commons Math3学习之数值积分实例代码,这里给大家分享math3多项式曲线拟合的相关内容,具体如下. 多项式曲线拟合:org.apache.commons.math3.fitting.PolynomialCurveFitter类. 用法示例代码: // ... 创建并初始化输入数据: double[] x = new double[...]; double[] y = new double[...]; 将原始的x-y数据序列合成带权重的观察点数据序列:

  • java利用Apache commons codec进行MD5加密,BASE64加密解密,执行系统命令

    编写代码之前先来介绍一下我们要用到的两个包; commons-codec-1.10.jar Commons项目中用来处理常用的编码方法的工具类包,例如DES.SHA1.MD5.Base64,URL,Soundx等等. commons-exec-1.3.jar Apache Commons Exec 是 Apache 上的一个 Java 项目,提供一些常用的方法用来执行外部进程 你可以到本站直接下载 Apache Commons 官方包 下面看一下代码结构: import org.apache.c

  • java使用apache commons连接ftp修改ftp文件名失败原因

    今天被ftp上中文名修改坑了好久 项目用的是 apache commons 里的 FtpClient 实现的对ftp文件的上传下载操作,今天增加了业务要修改ftp上的文件名,然后就一直的报错,问题是它修改名字的方法只返回一个boolean,没有异常,这就很蛋疼了,找了好久才发现是中文的名字的原因 改名 直接上代码 package net.codejava.ftp; import java.io.IOException; import org.apache.commons.net.ftp.FTPC

随机推荐