#java #spring
Вопрос:
У меня есть объекты A, B, и они расширяют объект C, который имеет 100 общих полей. Я хотел бы создать картограф, не переписывая вручную эти 100 полей, возможно ли это с помощью какого-то пружинного механизма ? И вместо public A mapMe(B)
того , чтобы я хотел бы иметь public void mapMe(B, A)
или вообще public void mapMe(source, target)
, чтобы этот картограф не создавал новый объект A, я хочу передать ему существующие объекты A и B.
Ответ №1:
Взгляните на Mapstruct. Он создает сопоставитель между вашими объектами.
Ответ №2:
Вы можете использовать org.modelmapper.Моделист.
Дано:
public class ObjectA extends ObjectC {
}
public class ObjectB extends ObjectC {
}
public class ObjectC {
private String field1;
private String field2;
...getters, setters
}
Вы бы использовали его вот так:
ObjectB objectB = new ObjectB();
objectB.setField1("bField1");
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setSkipNullEnabled(true);
ObjectA objectA = new ObjectA();
objectA.setField2("aField2");
modelMapper.map(objectB, objectA);
System.out.println(objectA.getField1() " - " objectA.getField2());
Результат: bField1 — aField2
Вы можете изменить конфигурацию так, как хотите, я не был уверен, что полностью понял ваш вопрос. Я предполагаю, что вы хотите сопоставить значения с уже существующим объектом A, пропуская при этом нулевые значения?