You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MyBatis如何将方法参数传递至关联查询的子查询中?

解决MyBatis子查询访问外部参数的问题

当然可以把外部参数传递给子查询,具体通过以下方式实现:

1. 修改ResultMap的collection配置

在<collection>的column属性中,用键值对格式同时传递主查询的列和外部参数。键对应子查询的参数名,值对应主查询的列名或外部参数的@Param名称:

<resultMap id="one" type="FirstType" autoMapping="true">
    <collection property="listProp" 
               column="{example_id=example_id, params=params}" 
               ofType="SecondType" 
               select="subQuery">
    </collection>
</resultMap>

这里params=params的含义:

  • 第一个params:子查询中接收参数的@Param名称
  • 第二个params:主查询Dao方法中@Param("params")定义的外部参数

2. 修改子查询的Dao方法

子查询的接口方法需要同时接收主查询传递的列参数和外部参数:

List<SecondType> subQuery(@Param("example_id") Long exampleId, @Param("params") ParamObject obj);

这样配置后,子查询就能正常访问params对应的ParamObject对象了。

内容的提问来源于stack exchange,提问作者dev-rifaii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:30:53