【问题标题】:Pass a parameter to Custom mapping function将参数传递给自定义映射函数
【发布时间】:2019-07-25 14:43:42
【问题描述】:

使用MapStruct,并希望将常量/参数传递给自定义映射器

我的目的地有一个Map<String, Restriction> restrictions 类型的字段。源可能有 2-3 个字符串字段需要映射到映射中的单个限制。 Map 的键只是一个常数。使用 Map-struct Mapping 注释,我想将此键传递给自定义映射器,以便我可以在 Map 中创建初始值或检索 Map 中的现有值。

   @Mappings({

          @Mapping(source="source.someField", target="restrictions", constant="someKey"),

          @Mapping(source="source.startDate", target="restrictions", constant="someKey"),

          @Mapping(source="source.EndDate", target="restrictions", constant="someKey")

   })

   public abstract void restrictToClassA(SomeDataEntity source, @MappingTarget ClassA destination);

【问题讨论】:

    标签: java mapstruct


    【解决方案1】:

    常量是目标的替代品。您不能在同一个 @Mapping 注释中同时指定两者。但是,从您的故事中,我了解到您可以控制您的“A 级”目的地。因此,您可以将映射分组为四组。所以:

    Public Quadrupel{
    
       String prop1;
       String prop2;
       String prop3;
        //Getters/setters
    
    }
    
    ClassA{
    
       Quadrupel key1;
       Quadrupel key2;
        //Etc
        //Getters/setters
    
    }
    

    进入 A 类。然后,属性将与您的键名一致。您的自定义映射器可以选择这些并将它们映射到您的目标地图中。虽然,密钥也会有点可疑,因为属性会指示相同

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 1970-01-01
      • 2021-07-28
      • 2021-12-03
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多