Java 使用MapStruct映射嵌套字段
假设我有这些实体:Java 使用MapStruct映射嵌套字段,java,mapstruct,Java,Mapstruct,假设我有这些实体: 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
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);
}
映射嵌套字段时,您需要告诉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);
}
映射嵌套字段时,您需要告诉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);
}