Java-картограф для копирования полей из A в B

#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, пропуская при этом нулевые значения?