Apache Commons DbUtils工具包使用介绍

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批处理方法

分享到 :
相关推荐

如何通过ip访问云服务器(如何通过ip访问云服务器)

通过ip访问云服务器的步骤:1.在桌面。按“WIN+R”打开运行窗口。2.输入“[&...

选择香港云服务器要注意哪些事项

选择香港云服务器要注意的事项有:1。注意带宽的质量。选择前测试香港云服务器的网络pi...

使用云服务器快照功能有哪些优势

使用云服务器快照功能的优势有:1。配置简单。对块存储I/O性能的影响在10%以内。支...

韩国vps好用吗(韩国vps哪个牌子好)

既香港vps风靡全场之后。韩国vps强势来临。韩国vps可以帮助用户快速构建更稳定。...

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注