apache.commons.dbutils.QueryRunner.queryメソッドのhandlerパラメータ

1797 ワード

初めてapacheを使いました.commons.dbutils.QueryRunnerがデータベースにアクセスする人には疑問があります.
String url = "jdbc:mysql://localhost:3306/test";

Connection con = DriverManager.getConnection(url, "root", "pwd");

String sql = "select * from myTable";

QueryRunner qr = new QueryRunner();

qr.query(con, sql, handler); //con      , sql     , handler   ?

QueryRunner.queryメソッドの戻り値は、データベースから取得したデータを保存するObjectオブジェクトであり、
そのタイプ(明示的に変換可能なタイプ)はqueryメソッドを呼び出すときのhandlerパラメータによって決定される.
ResultSetHandler handler = new ArrayHandler();

Object obj = qr.query(con, sql, handler);

Object[] arr = (Object[])obj;



ResultSetHandler handler = new ArrayListHandler();

Object obj = qr.query(con, sql, handler);

List list = (List)obj;

すなわち、保存データのObjectオブジェクトの明示的な変換タイプは、handlerパラメータによって決定する.
 
handlerパラメータと戻りオブジェクトタイプの対照表を次に示します.
AbstractListHandler--複数行のリストの抽象クラスを返します
ArrayHandler--1行のObject[]を返します.
ArrayListHandler--各行がObject[]であるListを返します.
BeanHandler--最初のBeanオブジェクトを返します
BeanListHandler--各行がBeanであるリストを返します.
ColumnListHandler--リストを返す
KeyedHandler--Mapを返します.具体的にはコードを参照してください.
MapHandler--単一のMapを返します
「MapListHandler」--各行がMapであるListを返します.
「ScalarHandler」--列の最初の値を返します.