プログラミング その他

【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=[対象のフィールド]と指定する

最後に

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

参考情報

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

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

ランキング評価する

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

執筆者:


comment

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

CAPTCHA


関連記事

【Bootstrap】一覧表示をデザインしよう!

概要 一覧表示をデザインします。 Bootstrapにはすぐに使える便利なクラスが用意されているので、それらを使用して実現します。 【SpringBootチュートリアル】#7~ 検索画面の作成に変更を …

【Java】IllegalArgumentExceptionの原因と対策方法

IllegalArgumentExceptionの原因と対策方法はとても簡単です。 基本的なことを理解すればすぐに解消できます。 IllegalArgumentExceptionとは? 不正な引数また …

割引 ディスカウント 値引き

【Oracle】Java認定試験のチケットを割引で購入する方法

Oracle・Java認定試験のチケット代を安くする方法について私が実際に使った方法を紹介します。   対象試験 Java SE Bronze、SE 8 Silver/Gold、SE 11 …

Observerパターンってどう使うの?を考える(商品の予約)

目的 Observerパターンの使いどころとなる状況を具体例でもって理解する。   ゴール(実現すること) 商品の予約システムにおけるユーザ通知   実装する機能 ・商品を予約する …

Git BashでUniCodeに文字化けする時の対処法

大変参考になったサイトのエイリアスです。 git diff や git status での日本語の文字化けを防ぐ (core.page, core.quotepath) 私は自分のブログをリファレンス …

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

[保有資格]
・Java SE 11 Gold

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

SpringFramworkの良書

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

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