マイバティスでサブクエリにパラメータを渡す方法は何ですか?
MyBatisでサブクエリのパラメータを渡す方法は2つあります。
- I am currently studying Japanese.
私は現在日本語を勉強しています。 - 日本語で自然に言い換えると、以下のようになります : {}
- パラメータータイプ
<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);
- <各々>
- -> 各々
<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の値をサブクエリに渡し、条件を満たす親レコードリストを取得できます。