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


関連記事

【Java】LinkedHashSetの使い方(挿入順を保持するSet)

LinkedHashSetはHashSetのサブクラスであり、同じメソッドが実装されています。 メソッドの使い方であればHashSetと同じなので、HashSetの使い方を参照下さい。  ↓ 【Jav …

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

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

【SpringBoot入門】#1~ 開発環境を準備しよう(IDE)

想定読者 SpringBootを始めて学ぶ方   IDE(Eclipse) IDEにはEclipse以外にもNetBeansやIntelliJがあります。 好みによりますので使いやすいものを …

【Java】TDDして汎用的な部品を作成する(日付期間オブジェクト)

目的 TDDブートキャンプというセミナーに参加して面白かったので、 自分で何かやってみようと思った。 仕様 日付期間を保持するオブジェクトである。 開始日と終了日を持つ。 開始日と終了日を持つことをど …

【Java】オブジェクト指向の練習題材(会員オブジェクト)

前回記事、オブジェクト指向とは何なのかを簡単に説明してみるの練習題材です。   仕様 以下の会員クラスを作成し、Mainクラスで表示する。 会員クラスには、「会員」という単位で持つことできる …

記事を探す

SpringFramworkの良書

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

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