溫馨提示×

mybatis子查詢傳參數的方法是什么

小億
232
2024-01-02 11:00:55
欄目: 編程語言

MyBatis中可以通過兩種方式傳遞子查詢的參數:

  1. 使用占位符(#{})方式傳遞參數:可以在子查詢中使用#{}來表示參數,然后在父查詢中通過parameterType指定參數類型,并在傳遞參數時將參數傳遞給父查詢。例如:
<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. 使用<foreach>標簽進行參數傳遞:可以在父查詢中使用<foreach>標簽來遍歷參數列表,并將參數傳遞給子查詢。例如:
<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中的值傳遞給子查詢,并返回滿足條件的父記錄列表。

0