mybatis子查询传参数的方法是什么

867
2023/12/6 11:00:55
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

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中的值传递给子查询,并返回满足条件的父记录列表。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: 怎么使用MyBatis的ResultHandler处理结果集