プログラミング その他

【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入門】起動パラメータを付けて起動してみよう!

概要 Javaプログラムを起動する際に、何らかのパラメータ(値)を付けて起動することができます。 今はこのメリットがわからないと思いますが、そういうことができるんだなというレベルで理解しておいて頂けれ …

CompsiteパターンでHTMLタグを実現するには?

Compositeパターンに応用できそうなものとして、 HTMLタグなんかいいかと思いコーディングしてみました。   クラス図   説明 Compositeパターンは再帰構造を実現 …

【Java】画像ファイルをバイナリで比較する方法

  画像ファイルの比較 比較元ファイル 素材はPhotoACから拝借しました。 コピー元画像:PCを持つ女性 コピーしたファイルとの比較(True) コピー元ファイルをコピーしただけのファイ …

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

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

ExcelをA1セルに揃えて拡大率100%にするツール

(追記:2021年8月18日) サブフォルダを処理対象にするかどうかを選択できるように改修しました。   たくましゅくじょさんのところで公開されていた、 「エクセルで全シートの拡大率を100%にしA1 …

SpringFramworkの良書

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

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