Java for memory

memory is forever

常用链接

统计

最新评论

Apache dblUtils 工具包的使用

关键字: commons-dbutils 工具包的使用
commons-dbutils 是 Apache 组织提供的一个开源 JDBC 工具类库,能让我们更简单的使用 JDBC 。 
今天,在传智播客的课堂上,我们学习了 DBUtils 类库,知道了如何能够更方便地使用 JDBC 。以下是我的学习总结。 


-------------------------------------------------------------------------------- 
1. API 介绍: 
<1> org.apache.commons.dbutils.DbUtils:提供如关闭连接、装载 JDBC 驱动程序等常规工作的工具类; 
<2> org.apache.commons.dbutils.QueryRunner:该类简单化了 SQL 查询,它与 ResultSetHandler 组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。 
<3> org.apache.commons.dbutils.ResultSetHandler:该接口用于处理 java.sql.ResultSet,将数据按要求转换为另一种形式。 
-------------------------------------------------------------------------------- 

2. 工具类的方法及示例代码: 
<1> DBUtil 类的主要方法如下: 
a. public static void close(…) throws java.sql.SQLException: DbUtils类提供了三个重载的关闭 

方法。这些方法检查所提供的参数是不是 NULL ,如果不是的话,它们就关闭 Connection、Statement 和 ResultSet。 
b. public static void closeQuietly(…): 这一类方法不仅能在 Connection、Statement 和ResultSet 为 NULL 情况下避免关闭,还能隐藏一些在程序中抛出的 SQLEeception。 
c. public static void commitAndCloseQuietly(Connection conn): 用来提交连接,然后关闭连接,并 

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


-------------------------------------------------------------------------------- 
<2> QueryRunner 类的构造方法及主要方法: 
a. 默认的构造方法: 
public QueryRunner(){} 
b. 需要一个 javax.sql.DataSource 来作参数的构造方法: 
public QueryRunner(DataSource ds) { 
this.ds = ds; 

QueryRunner类的主要方法: 
c. public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) 
throws SQLException:执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。更重要的是参数 ResultSetHandler 会把从 ResultSet 中获得的数据转换成程序需要的数据格式。 
d. public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException:几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。 
e. public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException :执行一个不需要置换参数的查询操作。 
f. public int update(Connection conn, String sql, Object[] params) throws SQLException:用来执行一个更新(插入、更新或删除)操作。 
g. public int update(Connection conn, String sql) throws SQLException:用来执行一个不需要置换 

参数的更新操作。 


-------------------------------------------------------------------------------- 
<3> ResultSetHandler接口 
ResultSetHandler 接口提供了一个单独的方法: 
Object handle (java.sql.ResultSet .rs)。 
-------------------------------------------------------------------------------- 
<4> ResultSetHandler 接口的实现类 
a. ArrayHandler:把结果集中的第一行数据转成对象数组。 
b. ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到 List 中。 
c. BeanHandler:将结果集中的第一行数据封装到一个对应的 JavaBean 实例中。 
d. BeanListHandler:将结果集中的每一行数据都封装到一个对应的 JavaBean 实例中,存放到 List里。 
e. ColumnListHandler:将结果集中某一列的数据存放到 List 中。 
f. KeyedHandler:将结果集中的每一行数据都封装到一个 Map 里,然后再根据指定的key把每个 Map 再存放到一个 Map 里。 
g. MapHandler:将结果集中的第一行数据封装到一个 Map 里,key 是列名,value 就是对应的值。 
h. MapListHandler:将结果集中的每一行数据都封装到一个 Map 里,然后再存放到 List。 
i. ScalarHandler:将结果集中某一条记录的其中某一列的数据存成 Object。 
-------------------------------------------------------------------------------- 
<5> 下面是简单对这几个工具类的测试代码: 
QueryRunner runner = null; 
runner = new QueryRunner();// 获得QueryRunner类的实例对象 
Connection conn = null; 
Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动 
conn = DriverManager.getConnection("jdbc:mysql://localhost:3309/bookstore", 
"root", "1230");// 与数据库建立连接 
String sql = "SELECT id, name, title, price, yr, description, saleAmount FROM books 

WHERE id = ?";// 准备 sql 语句 
List<Book> list = (List) runner.query(conn, sql, new Object[]{"201"}, new 

BeanListHandler(Book.class));// 运用 QueryRunner 的方法执行 sql 语句,并获取结果集,从这里可 

//以看出运用 commons-dbutils 类库的方便之处,避免了创建 ResultSet 对象来设置参数的麻烦。 
System.out.println(books.size()); //输出 books 的元素个数 


-------------------------------------------------------------------------------- 
<6> 其它类和接口: 
a. org.apache.commons.dbutils.QueryLoader类:属性文件加载器,主要用于加载属性文件中的 SQL 到内存中。 
b. org.apache.commons.dbutils.wrappers.SqlNullCheckedResultSet类:该类是用来对sql语句执行完成 

之后的的数值进行null的替换。 
c. org.apache.commons.dbutils.wrappers.StringTrimmedResultSet类:去除ResultSet中字段的左右空格。 
d. org.apache.commons.dbutils.RowProcessor接口:提供了把结果集的行数据转换成其它格式的功能。它的实现类是org.apache.commons.dbutils.BasicRowProcessor类。 

posted on 2009-08-20 14:26 Lanny 阅读(368) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: