検索結果の列を取得する
検索結果の任意の列の値を取得したいときは、ColumnListHandlerを使用します。このColumnListHandlerは、取得した列をJavaのObjectのListに変換して格納します。取得したい列の列名をColumnListHandlerの引数として渡します。次の例では、データベースに格納されたレコードのname列を全件取得しています。
public List<Object> getColumnList() throws SQLException { ResultSetHandler<List<Object>> rs = new ColumnListHandler("name"); List<Object> book = runner.query( "select name from book", rs); return book; }
検索結果を配列として取得する
ある条件にマッチするレコードが1件だけ検索されたときは、ArrayHandlerを使用します。このArrayHandlerは、データベースから取得した値をJavaのObjectに変換して格納します。変換されるObjectはデータベースの列のデータ型に応じたJavaのデータ型になります。SQLの実行結果が複数レコードある場合は、先頭の行が格納されます。
public Object[] getArray() throws SQLException { ResultSetHandler<Object[]> rs = new ArrayHandler(); Object[] book = runner.query( "select id,name,price from book where id=\"b001\"", rs); return book; }
条件にマッチするデータの検索結果が複数レコードある場合はどうすればよいでしょうか?そのときは、ArrayHandlerではなく、ArrayListHandlerを使用します。このArrayListHandlerは、取得した値をJavaのObjectのListに変換して格納します。
public List<Object[]> getArrayList() throws SQLException { ResultSetHandler<List<Object[]>> rs = new ArrayListHandler(); List<Object[]> book = runner.query( "select id,name,price from book", rs); return book; }
列名をキーとするMapとして取得する
データベースから取得した値は、列名とあわせて取り扱うことが便利なときもあります。そんなときは、MapHandlerを使用します。このMapHandlerは、データベースから取得した値を、列名をキー、値をJavaのObjectとするMAPに変換して格納します。
public Map<String,Object> getMap() throws SQLException { ResultSetHandler<Map<String,Object>> rs = new MapHandler(); Map<String,Object> book = runner.query( "select id,name,price from book where id=\"b001\"", rs); return book; }
ある条件にマッチするデータの検索結果が複数レコードある場合はどうすればよいでしょうか? そのときは、MapHandlerではなく、MapListHandlerを使用します。
public List<Map<String,Object>> getMapList() throws SQLException { ResultSetHandler<List<Map<String,Object>>> rs = new MapListHandler(); List<Map<String,Object>> book = runner.query( "select id,name,price from book", rs); return book; }