質問編集履歴

1 修正

kanitama111

kanitama111 score 1

2018/07/04 22:58  投稿

MyBatisのForeachで複数列指定のIN句を実現したい。
Mybatisのforeachで複数列指定のIN句をどのようにかけばよいか苦戦しています。
DBはDB2です。
具体的には下記のようなSQLを動的に生成したいです。
### 実現したいSQL
```SQL
SELECT
    ユーザー名
FROM
    ユーザー情報テーブル
WHERE
    (ユーザーID親, ユーザーID枝) IN (VALUES ('001','01'),('002','01'))
```
Javaからは下記のようなVOのリスト(List<User>)を渡します。
### SQLに渡すVO
```Java
public class User {
private String userIdOya;
private String userIdEda;
}
```
上記を踏まえて以下のように書いてみたのですが、どうも違うような気がします。。。
ちなみにまだ動作確認できる環境がありません。
### Mapper.xml
```SQL
```Mapper.xml
<select id="selectUserName" parameterType="User" resultType="java.lang.String">
 SELECT
     ユーザー名
 FROM
     ユーザー情報テーブル
 WHERE
     (ユーザーID親, ユーザーID枝) IN (VALUES
 <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
       #{item.userIdOya},
       #{item.userIdEda}
 </foreach>
</select>
```
どなたかご教授お願いいたします。
  • Java

    15811 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Spring

    839 questions

    Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

  • DB2

    73 questions

    DB2(IBM Database2)は、IBMのリレーショナルデータベース管理システム製品です。 UNIXとWindows、IBM社のメインフレームOS用が用意されており、 幅広いプラットフォームに対応しています。

  • MyBatis

    72 questions

    MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る