如何在Java Spring Boot应用程序中合并两个对象?

时间:2019-04-11 14:28:03

标签: java spring mapping

我需要在Java Spring Boot应用程序(ProductDTO和Product)中合并对象。

ProductDTO并不包含Product中的所有字段,我只想映射两个对象中相同的字段,同时保留目标对象中的其他值。

我来自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方法后,项目对象仍包含“描述”字段的原始值。

在Java Spring中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

spring bean库中有一个BeanUtils类。

BeanUtils.copyProperties(source, target);

只要您的类包含相同的属性名称,就会在目标中调用适当的setter。它将忽略目标中不存在的任何属性。

答案 1 :(得分:0)

对于您的情况,可以使用Apache或Spring bean utils来实现。

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

两种情况下参数的位置都不同。