java - 需要使用mapstruct将两个源对象合并到目标对象中,这里source1中的一个字段是List,而source2中的一个字段是字符串

标签 java mapstruct

public class Source1 {
    private String name;               //srihari  
    private List<String> city_names;   //city_names.add("hyderabad-india")
 }
public class Soruce2 {
    private String name;
    private String city_name;            //hyderabad-india
    private List<String> technologies;   //Arrays.asList("java","mapstruct")
 }
public class Target {
    private String name;            // Result: srihari 
    private String city_names;      // Result: hyderabad-india
    private String technologies;    // Result: java, mapstruct
}`

list只有一个值,即list.size()=1。如果 source1 名称为空,则必须从 source2 获取。并且目标应该包含所有字段,即使这些字段在一个源中不可用

最佳答案

尝试:

@Mapper
public interface MyMapper{

   // will map all other fields that you specify
   @Mapping( target = "city_names", ignore = true )
   @Mapping( target = "technologies", ignore = true )
   Target map(Source1 s1, Soruce2 s2);

   default map(Source1 s1, Soruce2 s2, @MappingTarget Target t) {
      // do whatever you like with city_names and technologies
   }


}

关于java - 需要使用mapstruct将两个源对象合并到目标对象中,这里source1中的一个字段是List,而source2中的一个字段是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748471/

相关文章:

java - Quartz 调度程序无法获取 JNDI DB 资源但无论如何都会启动

java - Heroku 集成

java - 在 ListView 中使用 Picasso

java - 无法初始化类org.springframework.aop.framework.DefaultAopProxyFactory

java - 在 Java 或 Perl 中创建随机 XML 条目

java - MapStruct:如何在映射到新对象时实现 NullValuePropertyMappingStrategy.SET_TO_DEFAULT

java - 如何从可选 Java 对象的数组中删除所有项目?

java - 我可以使用 mapstruct 映射从 ArrayList<Object> 扩展的类吗?

java - Mapstruct-找不到没有源的属性的映射

java - 将双向实体方法与 Mapstruct 结合使用