使用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);
最佳答案
常数是目标的替代方案。您不能在同一个 @Mapping 注释中指定两者。但是,从你的故事中我了解到你可以控制你的“A 级”目的地。因此,您可以将映射分组为四元组。所以:
Public Quadrupel{
String prop1;
String prop2;
String prop3;
//Getters/setters
}
ClassA{
Quadrupel key1;
Quadrupel key2;
//Etc
//Getters/setters
}
进入A级。然后,属性将与您的键名称一致。您的自定义映射器可以选择这些并将它们映射到您的目标 map 中。不过, key 也会有点可疑,因为属性会指示相同
关于java - 将参数传递给自定义映射函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57204685/