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

MapStruct如何在批量映射方法中传递额外ID参数

问题

MyOM和MyEntity对象均包含id字段,当前单个对象映射方法map()可正常工作:传入id参数后,对应的MyEntity能接收该参数。现需实现批量映射方法mapDTOs()的相同逻辑,使其在遍历调用map()时,将接收的id参数传递给每一次调用。相关代码示例如下:

@Mapping(target = "id", expression = "java(id)")
MyEntity map(MyOM om, String id);

@Mapping(target = ??, expression = ??)
List<MyEntity> mapDTOs(List<MyOM> dtos, String id);
解决方案

不需要给mapDTOs()添加额外的@Mapping注解,MapStruct会自动关联已定义的单个映射方法,实现批量遍历并传递参数的逻辑,直接这样写就行:

@Mapping(target = "id", expression = "java(id)")
MyEntity map(MyOM om, String id);

// 无需额外映射配置,MapStruct会自动循环调用上面的map方法,把id参数传给每一次调用
List<MyEntity> mapDTOs(List<MyOM> dtos, String id);

原理很直白:MapStruct会识别批量方法和单个方法的对应关系,当你定义了接收List<MyOM>和额外id参数的批量方法时,它会自动遍历输入的List,每次调用单个的map()方法,同时把id参数传递进去,完全复用单个映射的规则,不用重复写映射表达式。

内容的提问来源于stack exchange,提问作者jeangr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:35:19