Java

【JdbcTemplate】Queryの書き方(SELECT文)

投稿日:

JdbcTemplateでQueryを書く方法です!
(SELECT文で、1件・複数件を取得するケース)
 

前提

以下のテーブル(users)を持ち、格納するのはUserクラスという想定で説明していきます。

usersテーブル

Userクラス

 

データの取得

1件のみと複数件を取得するケースで説明します。
 

Mapで取得する方法

1件のみ取得

Map<String, Object>の形でQuery結果を取得する。

複数件を取得

List<Map<String,Object>>でQuery結果を取得する。

 

RowMapperで取得する方法(準備が必要)

RowMapperインターフェースを実装した、独自マッパーの準備が必要です。
 

準備

RowMapperインターフェースを実装したクラスを作成する。
(1件のみ、複数件の取得に共通)

 

1件のみ取得

RowMapperインターフェースを実装したマッピング結果を受け取る。

 

複数件を取得

RowMapperインターフェースを実装した結果をListで受け取る。

 

BeanPropertyRowMapperで取得する方法(準備不要!)

RowMapperインターフェースを実装したクラスの作成が不要!
テーブルのカラム名と、マッピングするクラスのフィールド名が同じであれば、
自動で値をセットしてくれる。

適用可能な例

・スネークケース
テーブルのカラム名:user_id
クラスのフィールド名:userId

・同じ
テーブルのカラム名:id
クラスのフィールド名:id

※格納するクラス(今回の場合で言うと、Userクラス)に、
 Default Constructor と setterがあることが前提です。
Lombokを使用しているのであれば、@Setterアノテーションか、
@Dataアノテーションがあればいいです。

 

1件のみ取得

 

複数件を取得

どれがいいのか?

1位:BeanPropertyRowMapper

最もマッピングが楽な方法。
setterが許されている開発現場であれば、これを使えばいい。

もし、setterを使えない(ValueObject化する必要がある)場合、
RowMapperで実装すればよい。

2位:RowMapper

マッピングするクラスの作成が少し手間である。
ただし作っておけば、Mapのように1件取得と複数件取得で2か所に
Userクラスへの格納処理を書くということは無い。

マッピングするクラスを独自に定義したいときには使えばよい。

3位:Map

Queryの取得結果をUserクラスに格納するのをわざわざ書かなければならないため、
手間とメンテナンスの面でお勧めできない。

-Java
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

Thymeleafで1000円単位をカンマ区切りで表示する方法

Thymeleaf(テンプレートエンジン)で金額などの数値を 1000円単位のカンマ区切りで表示する方法です。 ここでは、カンマ区切りの機能はオブジェクト側で実装し、 Tymeleaf(View)は表 …

SpringでNotNullなどのバリデーションが効かないときの対処法

状況 フィールドに入っている値は空文字なのに、 @NotNull, @NotEmpty, @NotBlankでエラーとして検知されない。 (BindingResultでhasErroe=0件となる) …

【SpringBootチュートリアル】#9~ 更新画面の作成

※2021/01/09  画面遷移等のバックエンド側の内容が抜けていたので追記しました。 概要 検索結果一覧から編集ボタン押下で遷移してくる更新画面です。 遷移時(初期表示時)には、編集ボタンを押下し …

【Java】MySQLから取得した日付をフォーマット変換して表示する方法

MySQLからSELECTしてきた日付データ(DateTime型)を、 「yyyy年MM月dd日 hh時mm分ss秒」のフォーマットで表示する方法です。 コード [crayon-600565b35fe …

【Spring】バリデーション時に、入力値を保持する方法

登録画面で「登録」ボタンを押した後、 バリデーションで引っ掛かってエラーになっても 入力内容を画面に保持して置く方法についてです。 テンプレートエンジンは、Tymeleafを使用しています。 方法とし …

記事を探す

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。