【问题标题】:MapStruct: map nested object properties to propertiesMapStruct:将嵌套对象属性映射到属性
【发布时间】:2018-05-24 13:07:37
【问题描述】:

假设我有以下对象:

class Person {
    String firstName;
    String lastName;
}

class PersonBLO {
    Person person;
    Integer foo; // Some calculated business property
}

class PersonDTO {
    String firstName;
    String lastName;
    Integer foo;
}

我发现自己正在编写以下映射器:

@Mapping(target = "firstName", source = "person.firstName")
@Mapping(target = "lastName", source = "person.lastName")
PersonDTO personBLOToPersonDTO(PersonBLO personBLO);

是否可以自动将所有person.* 属性映射到相应的* 属性?

【问题讨论】:

    标签: java mapstruct


    【解决方案1】:

    现在,with version 1.4 及以上mapstruct 您可以这样做:

    @Mapping(target = ".", source = "person")
    PersonDTO personBLOToPersonDTO(PersonBLO personBLO);
    

    它将尝试将person的所有字段映射到当前目标。

    【讨论】:

      【解决方案2】:

      目前无法使用通配符。

      您可以做的是提供一种自定义方法,该方法只会调用正确的方法。例如:

      @Mapper
      public interface MyMapper {
      
      default PersonDTO personBLOToPersonDTO(PersonBLO personBLO) {
          if (personBLO == null) {
              return null;
          }
          PersonDTO dto = personToPersonDTO(personBlo.getPerson());
          // the rest of the mapping
      
          return dto;
      }
      
      PersonDTO personToPersonDTO(PersonBLO source);
      
      }
      

      【讨论】:

      • 谢谢!所以无论哪种方式,我都必须手动实现部分映射。我应该在 GitHub 上创建功能请求票,还是这不符合路线图?
      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 2022-10-23
      • 2021-07-14
      相关资源
      最近更新 更多