java - 将参数传递给自定义映射函数

标签 java mapstruct

使用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/

相关文章:

java - Hibernate JPA、Spring MVC 和 LazyInitializationException

java - Spring 3.2 ehcache 的缓存 NamespaceHandler

java - mapstruct - 将字段值映射到属性

java - 两部分 : How to run 'ls' from a java program and how to tell computers on a storm cluster to execute specific commands

java - Java 中的 nextInt() 方法

spring-boot 2.5.2 带有 mapstruct\lombok 和 swagger2 (mapstruct 不起作用)

java - 使用不同的忽略字段多次映射同一对象

java - 保留文本文件中收到的数据

java - TextureView.getBitmap() 函数是否有任何快速替代方案?