Java

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

投稿日:2020年1月12日 更新日:

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クラスに格納するのをわざわざ書かなければならないため、
手間とメンテナンスの面でお勧めできない。

最後に

独学が難しい、エラーの解消に時間がかかる、今学ぶべき技術は何だろうといった悩みがあるようだったら現役エンジニアによるオンラインのサポートサービスを検討してみて下さい。
回答率100%の掲示板に質問し放題のオンラインサービス

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-Java
-, ,

執筆者:


comment

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

CAPTCHA


関連記事

【SpringBoot入門】#11~ 削除ダイアログの作成

概要 検索結果から削除機能を呼び出した際に、削除を確認するためのダイアログです。 実装はjQueryで行いますので、mavenへの追加作業等の準備を別途行います。 イメージ jQueryの準備 jQu …

【Javaサンプル】自動販売機を作成(Level1)

Javaの勉強用サンプルです。 テーマは自動販売機。 プログラミング初心者向けに書いています。   自動販売機を題材として選んだ理由 自社研修で行っている 自社研修で自動販売機を作成したので …

【Java入門】インターフェースの使い方まとめ

概要 インターフェースとは、内部実装を知る必要なく、利用する機能の接点のみを提供する仕組みです。 接点をソフトウェア的にいうと、メソッドのシグネチャと戻り値の型に当たります。 つまり、どんなメソッドに …

【Java】HashSetの使い方(順序なしSet)

HashSetの使い方をまとめました。 HashSetに関する使い方のサイトは他にもありますが、 それらのサイトには書かれていないメソッドについても書いてあります。 HashSetの基本情報 ・重複す …

【SpringBoot入門】#13~ 独自のエラー画面の作成

概要 何らかのエラーが発生した場合に、エラー画面を表示して対応したいことがあります。 デフォルトのwhite label Error pageのままというわけにはいかないので、 独自のエラー画面を作成 …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

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

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