2016-04-19 310 views
0

modelMapperを使用してDTOクラスにマップする単純なクラスがあります。modelMapperを使用して入れ子クラスを変換する方法

class Source { 

    private String name; 
    private String address; 
    List<Thing> things; 

    // getters and setters follows 
    } 

    class Thing { 

    private String thingCode; 
    private String thingDescription; 

    // getters and setters 
} 

と私はThingDTOsのリストが含まれsourceDTOにこれらを変換する、例えば

class sourceDTO { 

    private String name; 
    private String address; 
    List<ThingDTO); 

    // getters and setters. 
    } 

    class ThingDTO { 

    private String thingCode; 
    private String thingDescription; 

    // getters and setters 
} 

私は物事やThingsDTOのリストの私のリストをドロップした場合、その後modelmapperは、使用する喜びです、

modelMapper.map(source, SourceDTO.class); 

しかし、私はThingDTOsのリストに物事のリストを変換するマッパーを取得する方法を考え出すことはできません。ドキュメントから、私はPropertyMapを拡張するマッパークラスを作成する必要があると思うが、それを設定する方法を考えることはできない。

関連文書への任意のポインタは、私はあなたが緩んでいるか、標準としてごModelMapperを設定した場合、それはあなたのためになると思う

答えて

1

歓迎されるであろう。

modelMapper = new ModelMapper(); 
modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE); 

あなたは次の試みることができるOtherwhise:その後、次のようThingDTOにマッピングシングをカスタマイズ

public class ListThingToThingDTOConverter implements Converter<List<Thing>, List<ThingDTO>> { 


@Override 
public List<ThingDTO> convert(MappingContext<List<Thing>, List<ThingDTO>> context) { 
    List<Thing> source = context.getSource(); 
    List<ThingDTO> output = new ArrayList<>(); 
    ... 
    //Convert programmatically List<Thing> to List<ThingDTO> 
    ... 

    return output; 
    }} 
    1. をあなたが好きなコンバータを作成することが

      public class SourceToSourceDTOMap extends PropertyMap<Thing, ThingDTO> { 
            @Override 
            protected void configure(){ 
             using(new ListThingToThingDTOConverter()).map(source.getThings()).setThings(null); 
            } 
      
    2. 最後に、あなたが以下のようにあなたのModelMapperにSourceToSourceDTOMapを追加する必要があります。

      modelMapper = new ModelMapper(); 
      modelMapper.addMappings(new SourceToSourceDTOMap()); 
      
  • 関連する問題