検索
連載

DbUtilsで結果セットの内容をスカラー値として取得するJavaTips 〜Javaプログラミング編

Share
Tweet
LINE
Hatena

 本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)に対応することになります。

ScalarHandler、ArrayHandler、ArrayListHandler、MapHandler、MapListHandlerの違い
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活用でデータソース管理を一元化する」を参照してください。

Items.sql

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


ScalarArrayMapHandlerSample.jsp

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


実行結果
実行結果

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る