この場合、PropertyMap
は使用できません。 ModelMapper
を使用してマップしたい場合は、PropertyMap
の代わりにConverter
を使用する必要があります。
まずあなたConverterはsource
がComplexSource
とSimpleDTO
ある場合など、次なる目的地である:
Converter<ComplexSource, SimpleDTO> converter = new AbstractConverter<ComplexSource, SimpleDTO>() {
@Override
protected SimpleDTO convert(ComplexSource source) {
SimpleDTO destination = new SimpleDTO();
List<String> sourceList = source.getElementList();
if(null != sourceList && !sourceList.isEmpty()){
int sizeList = sourceList.size();
destination.setFirstElement(sourceList.get(0));
destination.setLastElement(sourceList.get(sizeList - 1));
}
return destination;
}
};
その後、あなたは自分のModelMapper
インスタンスにコンバータを追加する必要があります。
ModelMapper mapper = new ModelMapper();
mapper.addConverter(converter);
の場合あなたは地図を試して、それは完全に動作します:
出力
SimpleDTO [firstElement = firstElement、lastElement = lastElement]
あなたのコメントを尊重し、あなたはそれが(であなたのソース・インスタンスに必要されている場合NULLをチェックする必要がありますこの場合、リストがnullの場合はnullポインタが可能です)。しかし、それは目的地インスタンスのためにあなたの目的地を設定することができますProvider
(Providers documentation)とどのようにすることができます。
このような特殊なケースの場合は、Converter
と言っているので、nullチェックと例外処理について心配する必要があります。これは、手動でpojosをマップするmodelmapperの方法です。使用ModelMapperの
advantadgesは、そのウェブで説明されています:あなたはいくつかのケースで正しく設定している場合には、手動でマップを実行する必要が
- ではありません。
- マッピングを集中管理します。
- 特殊な使用事例を処理するためのマッピングAPIを提供します。
- (これはあなたのケースである)などが
出典
2016-11-11 05:50:04
Pau
おかげで(見てそのwebを取ります)!接線問題、ModelMapperを使う利点と単純なマッパーメソッドを使ってあるオブジェクトを別のオブジェクトに変換する利点は何ですか?私は、サードパーティのマッパーでヌルチェックや例外処理について心配する必要はないと思っていましたが、私の仮定が間違っているようです。 – Matrix
@Matrixコメントを投稿して回答しました – Pau