SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

目指せ、定時退社! スマートなエンジニアのためのお役立ちツール

DBの値を自動でJavaオブジェクトに変換するライブラリ「DBUtils」のご紹介

目指せ、定時退社! スマートなエンジニアのためのお役立ちツール(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

検索結果の列を取得する

 検索結果の任意の列の値を取得したいときは、ColumnListHandlerを使用します。このColumnListHandlerは、取得した列をJavaのObjectのListに変換して格納します。取得したい列の列名をColumnListHandlerの引数として渡します。次の例では、データベースに格納されたレコードのname列を全件取得しています。

値の取得イメージ
値の取得イメージ
検索結果の列の値を取得する(SelectBook.javaの抜粋)
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の実行結果が複数レコードある場合は、先頭の行が格納されます。

値の取得イメージ
値の取得イメージ
配列を取得する(SelectBook.javaの抜粋)
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に変換して格納します。

値の取得イメージ
値の取得イメージ
配列を複数取得する(SelectBook.javaの抜粋)
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に変換して格納します。

値の取得イメージ
値の取得イメージ
列名をキーとするMapとして取得する(SelectBook.javaの抜粋)
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を使用します。

値の取得イメージ
値の取得イメージ
列名をキーとするMapを複数取得する(SelectBook.javaの抜粋)
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;
}

次のページ
データベースの値を更新しよう

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
目指せ、定時退社! スマートなエンジニアのためのお役立ちツール連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 阿佐 志保(アサ シホ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7584 2014/02/05 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング