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

如何在MapStruct中让同一参数同时用于@Mapping与@Named方法?

解决MapStruct中单一参数同时用于映射和自定义转换方法的问题

直接用以下方式修改代码即可,无需重复传入参数:

@Mapper
public interface CarMapper {
    @Mapping(source = "localCar.color", target = "color")
    @Mapping(source = "blueBookCar.price", target = "price")
    @Mapping(source = "localCar.features", target = "features", qualifiedByName = "mapFeatures") 
    abstract CarDto from(LocalCar localCar, BlueBookCar blueBookCar);

    @Named("mapFeatures")
    Map<Long, Feature> mapFeatures(Map<Group, Feature> features, @Context BlueBookCar blueBookCar) {
        // 此处可同时使用来自localCar的features参数,以及blueBookCar参数处理转换逻辑
    }
}

关键逻辑说明

  • 主方法中的BlueBookCar blueBookCar保持无注解状态,MapStruct会将其识别为映射源参数,允许在@Mapping中通过blueBookCar.price引用其属性。
  • 自定义转换方法mapFeatures中,给BlueBookCar参数添加@Context注解,MapStruct会自动将主方法中的blueBookCar实例传递到该参数中,无需手动重复传入。
  • 这种配置既满足了@Mapping对源参数的要求,又能让自定义方法获取到该参数用于业务逻辑处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:35:12