2016-06-30 10 views
1

В Интернете я нашел много примеров, где поля из одного исходного объекта сопоставляются целевому объекту, как показано ниже, с использованием каркаса Orika Mapping.Можно ли сопоставлять поля из двух исходных объектов целевому объекту с помощью Orika Mapper?

mapperFactory.classMap(BasicPerson.class, BasicPersonDto.class) 
      .field("name", "fullName") 
      .field("age", "currentAge") 
      .register(); 

Но мое требование отличается от этого традиционного сопоставления. Я получаю два исходных объекта и один целевой объект. Мне нужно сопоставить некоторые поля из первого исходного объекта и некоторые поля из второго исходного объекта на целевой объект.

Пожалуйста, разместите ваши предложения по этому сценарию.

ответ

3

У BoundMapperFacade есть метод map(A source, B target), который позволяет вам сопоставить от source к существующему экземпляру target. Таким образом, вы можете отобразить из двух разных исходных объектов на один и тот же целевой объект.

Пример кода:

class SourceA { 
    String fieldASource; 
} 

class SourceB { 
    String fieldBSource; 
} 

class Target { 
    String fieldATarget; 
    String fieldBTarget; 
} 

public Target mapToTarget() { 
    mapperFactory.classMap(SourceA.class, Target.class).field("fieldASource", "fieldATarget").register(); 
    mapperFactory.classMap(SourceB.class, Target.class).field("fieldBSource", "fieldBTarget").register(); 

    Target target = new Target(); 
    SourceA sourceA = new SourceA(); 
    SourceB sourceB = new SourceB(); 

    mapperFactory.getMapperFacade(SourceA.class, Target.class).map(sourceA, target); 
    mapperFactory.getMapperFacade(SourceB.class, Target.class).map(sourceB, target); 

    return target; 
} 

target будет его fieldATarget поле заполняется из sourceA объекта и fieldBTarget от sourceB объекта.