我是MapStruct API的新手,任何人都可以说如何做嵌套映射。我有两个类,一个是我的实际purchaseOrder类,即我的目标类,另一个是EDPurchaseOrder类,即源文件,这里不必担心我使用的命名约定,只需处理源文件和目标文件即可。
源类
源类EDCustomerOrder及其参考类
public class EDCustomerOrder{
private Integer orderID;
private String orderNumber;
private BigDecimal orderTotalQty;
private String UOM;
private PickupDTO pickupPoints;
private Integer supplierID;
private String supplierName;
private String supplierNature;
private EDAddress supplierEDAddress;
}
public class EDPickup{
private List<EDPOItem> items;
}
public class EDAddress{
private String addressLine1;
private String addressLine2;
private String addressLine3;
private String city;
private String state;
private string countryCode;
private String country;
private String postalCode;
}
public class EDPOItem{
private Integer itemID;
private String itemCode;
private String itemDescription;
private Integer itemQuantity;
}
Run Code Online (Sandbox Code Playgroud)
目标类
这里是我的目标类CustomerOrder及其参考类
public class CustomerOrder{
private Integer orderID;
private String orderNumber;
private List<Pickup> pickupPoints;
private Supplier supplierDetail;
}
public class Pickup{
private Integer pickupID;
private Integer pickupLocationNumber;
private List<POItem> items;
}
public class POItem{
private Integer itemID;
private String itemCode;
private String itemDescription;
private Integer itemQuantity;
}
public class Supplier{
private Integer supplierID;
private String supplierName;
private String supplierNature;
private Address supplierAddress;
}
public class Address{
private String addressLine1;
private String addressLine2;
private String addressLine3;
private String city;
private String state;
private string countryCode;
private String country;
private String postalCode;
}
Run Code Online (Sandbox Code Playgroud)
所以,我想你在目标端,例如对象的同一层级SongDTO,LibraryDTO和TrackDTO。
然后,您必须为每对对应对象声明一个映射方法,并@Mapping根据需要通过以下方法进行配置:
public interface MyMapper {
@Mapping(source="name", target="title")
SongDTO songToDto(Song song);
LibraryDTO libraryToDto(Library library);
TrackDTO trackToDto(Track track);
}
Run Code Online (Sandbox Code Playgroud)
然后,例如songToDto()将调用生成的实现,libraryToDto()以便将歌曲的库映射到歌曲DTO的库DTO。
另请参阅参考指南以了解更多信息。
| 归档时间: |
|
| 查看次数: |
9346 次 |
| 最近记录: |