【问题标题】:Map nested fields with MapStruct使用 MapStruct 映射嵌套字段
【发布时间】:2021-04-23 14:07:14
【问题描述】:

假设我有这些实体:

public class Address {
    private String id;
    private String address;
    private City city;
}

public class City {
    private int id;
    private Department department;
    private String zipCode;
    private String name;
    private Double lat;
    private Double lng;
}

public class Department {
    private int id;
    private Region region;
    private String code;
    private String name;
}

public class Region {
    private int id;
    private String code;
    private String name;
}

还有这个 DTO:

public class AddressDTO {
    private String address;
    private String department;
    private String region;
    private String zipCode;
}

在我的 DTO 中,我想映射

  • 来自城市/部门/名称的部门
  • 地区来自城市/部门/地区/名称

这是我的映射器:

@Mapper(componentModel = "spring")
public interface AddressMapper {
    AddressDTO addressToAddressDTO(Address item);
}

【问题讨论】:

    标签: java mapstruct


    【解决方案1】:

    当您映射嵌套字段时,您需要告诉 MapStruct 您希望从哪里以及如何使用 @Mapping 进行映射。

    在你的情况下,它看起来像:

    @Mapper(componentModel = "spring")
    public interface AddressMapper {
        
        @Mapping(target = "department", source = "city.department.name")
        @Mapping(target = "region", source = "city.department.region.name")
        @Mapping(target = "zipCode", source = "city.zipCode")
        AddressDTO addressToAddressDTO(Address item);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2018-09-15
      • 2016-10-14
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多