プログラミング その他

【MyBatis】IN句にパラメータを設定する方法

投稿日:2022年3月21日 更新日:

SpringアプリケーションにおいてMybatisを使用する状況を想定した実装例です。

期待値

IN句に複数のパラメータが設定されたSQL文が発行されること

 

前提

■アプリケーション構成
・org.springframework.boot 2.6.4
・spring-boot-starter-web
・mybatis-spring-boot-starter 2.2.2

■テーブル構成
Ticketテーブルに対して支払区分(payment_code)をIN句で指定する状況を想定しています。

実装例

Repositoryで指定する引数の型または指定方法によって、XMLのcollectionに指定する値が異なります。
以下にそれぞれのパターンを記載しました。

@Paramによる指定

Repository

XML
@Paramで指定した名称とcollectionの値を一致させます。

 

Arrayによる指定

Repository

XML
配列の場合、collectionには「array」を指定します。

 

Collection型による指定(ex. List)

ここではListを例に記載します。

Repository

XML

 

オブジェクトによる指定

検索フォームオブジェクトを検索パラメータとして扱う状況で説明します。
(氏名、誕生日はTicketテーブルにはありません。
 検索フォームをパラメータとして渡す例として支払区分以外を持たせるためのダミーです)
 
Form

Repository
検索フォームオブジェクトをパラメータとして渡した場合

XML
collectionには、Repositoryで指定されたFormのフィールドである「paymentCodes」を指定します。
その際、paymentCodesのGetterを用意しておいてください。
本記事では、lombokの@Dataを使うことでGetter/Setterを実装しています。

 

補足

XMLのnullableはcollectionとして渡すフィールドの値がNULLを許容するかの指定です。
falseを指定してNULL値を渡すと、MyBatisSystemExceptionが発生します。

 

まとめ

    IN句に設定する方法は以下の通りです。

  • @Paramで名称を指定する
  • 配列はcollection=arrayと指定する
  • Listはcollection=listと指定する
  • パラメータとして渡したオブジェクトのフィールドを指定したい場合、collection=[対象のフィールド]と指定する

参考情報

MyBatis – 動的SQL – foreach
https://mybatis.org/mybatis-3/ja/dynamic-sql.html

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

ランキング評価する

-プログラミング, その他
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【Java入門】プロジェクトの作成からHello, World!まで

概要 プログラミングの入門といえば「Hello, World!」です。 まずは最も簡単なプログラムを動かすことから始めていきましょう。   プロジェクトの作成 新規プロジェクト作成 新規で「Javaプ …

【Java】ArrayListの使い方まとめ

概要 ArrayListはOracleの公式ページでも明記しているクラスです。 Java SE 11 Programmer I (1Z0-815-JPN) 試験 インタフェースによる抽象化 インタフェ …

【Java】ポートフォリオ例(高配当株分析ツール)

概要 ポートフォリオにスクレイピングツールが良いと以前の記事でご紹介しました。 どんなものが作れるのか? ということの具体例として、私が作成したスクレイピングツールを紹介します。 仕様 スクレイピング …

【Java入門】Functionの使い方まとめ

概要 Function <T, R> apply(T)を関数メソッドに持つ関数型インタフェースです。 1つの引数を受け取って結果(R)を返します。   基本的な使い方 Functionイン …

【SpringBoot入門】#6~ 登録機能の実装

概要 画面から送信されたデータをDBに登録する機能を実装します。 入力データはバリデーションによってチェックされることとします。 サーバサイドは以下のように各層で処理分けされます。 <Contorol …

SpringFramworkの良書

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

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