<code>commons-dbutils</code>是apache开源组织提供的用于操作数据库的工具包。今天为大家介绍一下该包的常用方法。
对于数据库的操作无外乎增删改查,而增删改本质上可以归为一类,操作方式相同,只是sql语法不同而已,所以我将以修改和查询两类来介绍<code>commons-dbutils</code>的用法。
首先我们来创建一个测试类,使用junit进行测试。
在这段测试代码中,我们是用<code>h2</code>作为数据库进行测试以及定义了一些连接、数据库的初始化及销毁的方法。
在<code>commons-dbutils</code>中操作数据库的常用类为:<code>queryrunner</code>。
<code>queryrunner</code>的常用方法如下:
返回值
方法名
说明
int[]
batch(connection conn, string sql, object[][] params)
批量执行insert、update或delete
batch(string sql, object[][] params)
t
insert(connection conn, string sql, resultsethandler rsh)
执行一个插入查询语句
insert(connection conn, string sql, resultsethandler rsh, object… params)
insert(string sql, resultsethandler rsh)
insert(string sql, resultsethandler rsh, object… params)
insertbatch(connection conn, string sql, resultsethandler rsh, object[][] params)
批量执行插入语句
insertbatch(string sql, resultsethandler rsh, object[][] params)
query(connection conn, string sql, resultsethandler rsh)
查询
query(connection conn, string sql, resultsethandler rsh, object… params)
query(string sql, resultsethandler rsh)
query(string sql, resultsethandler rsh, object… params)
int
update(connection conn, string sql)
执行insert、update或delete
update(connection conn, string sql, object… params)
update(connection conn, string sql, object param)
update(string sql)
update(string sql, object… params)
update(string sql, object param)
我们先来看一下如何使用<code>queryrunner</code>进行修改操作,在我们的测试代码中添加测试方法:
修改的操作相比较而言还是很简单的,在这段测试代码中,我们向数据库中添加了一条记录,在<code>queryrunner</code>中也是支持动态参数的,可以很方便的绑定参数。
<code>scalarhandler</code>会返回一个对象,用于读取结果集中第一行指定列的数据。这里我们以查询表中总记录数为例:
不知大家有没有发现,在<code>scalarhandler</code>的泛型中,我使用的是<code>number</code>,解释一下:之前我在使用该方法查询记录条数的时候,不同的数据库返回的数据类型可能不同,有的返回是<code>integer</code>,而有的却是<code>long</code>,为了代码的通用,所以在这里我使用了<code>number</code>。
<code>arrayhandler</code>会返回一个数组,用于将结果集第一行数据转换为数组。
<code>arraylisthandler</code>会返回一个集合,集合中的每一项对应结果集指定行中的数据转换后的数组。
<code>keyedhandler</code>会返回一个<code>map</code>,我们可以指定某一列的值作为该<code>map</code>的键,<code>map</code>中的值为对应行数据转换的键值对,键为列名。
<code>columnlisthandler</code>会返回一个集合,集合中的数据为结果集中指定列的数据。
<code>maphandler</code>会将结果集中第一行数据转换为键值对,键为列名。
<code>maphandler</code>会将结果集中的数据转换为一个集合,集合中的数据为对应行转换的键值对,键为列名
<code>beanhandler</code>实现了将结果集第一行数据转换为<code>bean</code>对象,在实际应用中非常方便。
在编写测试代码之前,我们先来编写一个对应的<code>bean</code>类:
接下来,我们来编写测试代码:
<code>beanhandler</code>只转换结果集的第一行,而<code>beanlisthandler</code>会将结果集的所有行进行转换,返回一个集合。
<code>beanmaphandler</code>也会将结果集转换为<code>bean</code>对象,不过返回的是已指定列的值作为键的键值对。