11

私はMapStruct APIを初めて使用します。ネストされたマッピングを行う方法を誰でも言うことができますか? 2 つのクラスがあります。1 つはターゲット クラスと呼ばれる実際の purchaseOrder クラスで、もう 1 つはソース ファイルとして知られる 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;
    }

ターゲット クラス
ここで、ターゲット クラス 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;
    }
4

2 に答える 2

13

したがって、ターゲット側に同じオブジェクト階層があると思います。たとえば、 a SongDTOLibraryDTOおよびTrackDTO.

次に、対応するオブジェクトのペアごとにマッピング メソッドを宣言し、@Mapping必要に応じて構成する必要があります。

public interface MyMapper {

    @Mapping(source="name", target="title")
    SongDTO songToDto(Song song);

    LibraryDTO libraryToDto(Library library);

    TrackDTO trackToDto(Track track);
}

次に、たとえば、曲のライブラリを曲の DTO のライブラリ DTO にマップするために、 の生成された実装songToDto()が呼び出されます。libraryToDto()

詳細については、リファレンス ガイドもご覧ください。

于 2016-08-23T08:07:38.890 に答える