天天看點

commons-dbutils使用介紹修改查詢完整測試代碼

<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>對象,不過傳回的是已指定列的值作為鍵的鍵值對。