プログラミング その他

【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


関連記事

elseを使わないことでパフォーマンスが下がる場合の対処法

  状況 前回記事(なぜelse、else ifを書かないようにすべきなのか?)のような ifのみで判定されており、それがfor文等の繰り返し処理の中にある場合は パフォーマンスが下がる。 …

2進数を使うと判定がシンプルになる!(じゃんけんプログラム編)

概要 仕事で2進数を使った判定処理について学んだので共有したくて執筆しました。 仕事上で設計したロジックは本記事で紹介するものより複雑でしたが、本質的な部分は変わらないので使って頂けると思います。 説 …

Javaで数値(int)を部分一致判定する

文字列に変換して判定します。 <方法> ・matchesメソッドで正規表現使う。 ・containsメソッドに判定文字を渡す。 また、メソッドに切り出すと、intを変換する処理を個別に書かなくてよくな …

【マイクラ】コマンドからプログラム(Python)を実行する方法

ゴール Pythonで作成したプログラムをマインクラフト上のコマンドから操作することです。 「/py コマンド名(自分で作成したPythonプログラム)」と入力すると、対象のプログラムが実行されるよう …

結城浩氏のPrototypeパターン 練習課題6-1の回答例

結城浩氏著作「Java言語で学ぶデザインパターン入門」 Prototypeパターン 練習課題6-1の回答例です。 課題の概要 UnderLinePen、MessageBoxクラスのcreateClon …

SpringFramworkの良書

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

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