マイバティスでサブクエリにパラメータを渡す方法は何ですか?

MyBatisでサブクエリのパラメータを渡す方法は2つあります。

  1. I am currently studying Japanese.
    私は現在日本語を勉強しています。
  2. 日本語で自然に言い換えると、以下のようになります : {}
  3. パラメータータイプ
<select id="getParentsByChildId" parameterType="java.lang.Integer" resultType="Parent">
  SELECT * FROM parent WHERE id IN (
    SELECT parent_id FROM child WHERE id = #{childId}
  )
</select>

その後、子クエリを呼び出す際に、childIdパラメータを渡す。

List<Parent> parents = sqlSession.selectList("getParentsByChildId", childId);
  1. <各々>
  2. -> 各々
<select id="getParentsByChildIds" parameterType="java.util.List" resultType="Parent">
  SELECT * FROM parent WHERE id IN (
    <foreach collection="childIds" item="childId" separator=",">
      SELECT parent_id FROM child WHERE id = #{childId}
    </foreach>
  )
</select>

その後、子クエリを呼び出す際に、childIdsパラメータを渡します。

List<Integer> childIds = new ArrayList<>();
childIds.add(1);
childIds.add(2);
List<Parent> parents = sqlSession.selectList("getParentsByChildIds", childIds);

このようにして、childIdsの値をサブクエリに渡し、条件を満たす親レコードリストを取得できます。

bannerAds