Как объединить два объекта в приложении Java Spring Boot? - PullRequest
0 голосов
/ 11 апреля 2019

Мне нужно выполнить слияние объектов в приложении Java Spring Boot (ProductDTO и Product).

ProductDTO не содержит все поля из Product, и я хотел бы отобразить только те поля, которые одинаковы в обоих объектах, сохраняя при этом другие значения в целевом объекте.

IЯ из мира C #, поэтому я не знаю, как лучше всего добиться такого же поведения в Java.В C # я бы сделал это следующим образом:

    var project = new Project
    {
        Name = "Project 1",
        Description = "Description"
    };

    var projectDto = new ProjectDTO
    {
        Name = "Project 1 (changed)"
    };

    Mapper.Map(projectDto, project);

После выполнения метода Map объект проекта все еще содержит исходное значение для поля Description.

Каков наилучший способсделать это в Java Spring?

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

В библиотеке bean-компонентов есть класс BeanUtils.

BeanUtils.copyProperties(source, target);

Пока ваши классы содержат одинаковые имена свойств, соответствующий целевой метод будет вызываться в цели.Он будет игнорировать любые свойства, которых нет в цели.

0 голосов
/ 11 апреля 2019

В вашем случае вы можете сделать это, используя утилиты Apache или Spring bean.

org.apache.commons.beanutils.BeanUtils.copyProperties(Object destination, Object source)
org.springframework.beans.BeanUtils.copyProperties(Object source, Object dest)

Положение параметров в обоих случаях различно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...