本Tipsは「DBUtilsで結果セットをJavaBeansにマッピングする」の続きです。DbUtilsの概要についてはそちらを参照してください。
DbUtilsを使うと、検索結果をJavaBeansで取得するだけでなく、従来のResultSetのように結果セットから特定のカラムのデータを取得することもできます。これにはorg.apache.commons.dbutils.handlersパッケージのScalarHandler、ArrayHandler、ArrayListHandler、MapHandler、MapListHandlerを使います。これらの違いは以下のとおりです。ArrayHandlerはResultSet#getObject(int columnIndex)に、MapHandlerはResultSet#getObject(String colName)に対応することになります。
DbUtilsのクラス | 機能 | QueryRunner#query の戻り値の型 | |
---|---|---|---|
ScalarHandler | 最初のレコードのデータからのn番目のカラムを取得する | n番目のカラムに格納されている型 | |
ArrayHandler | 最初のレコードのデータをカラムごとにObject[]配列に格納し取得する | Object[] | |
ArrayListHandler | ArrayHandlerの全レコード対応版。全レコードについてArrayHandlerを適用し、得られた全Object[]インスタンスをListとして取得する | List(個々の要素はObject[]) | |
MapHandler | 最初のレコードのデータをカラム名をキーとしてMapインスタンスに格納し取得する | Map | |
MapListHandler | MapHandlerの全レコード対応版。全レコードについてMapHandlerを適用し、得られた全MapインスタンスをListとして取得する | List(個々の要素はMap) |
DbUtilsで結果セットの特定のレコードを取得する
Items.sqlで示されるようなテーブルITEMSに格納されたデータを、DbUtilsのScalarHandler、ArrayListHandler、MapListHandlerを用いて取得するjspの例を以下に示します。なお、DbUtilsのcommons-dbutils-1.0.jarがtomcat上のアプリケーションから参照可能になっており、DataSourceはJNDI名「java:comp/env/jdbc/TestDB」で取得できるものとします。tomcatでJNDI名を設定する方法は、「JNDI活用でデータソース管理を一元化する」を参照してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.