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
相关产品推荐
相关产品推荐

