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

Sem*_*jić 2 java mapping spring

我需要在 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);
Run Code Online (Sandbox Code Playgroud)

执行 Map 方法后,项目对象仍包含 Description 字段的原始值。

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

小智 5

spring beans 库中有一个 BeanUtils 类。

BeanUtils.copyProperties(source, target);
Run Code Online (Sandbox Code Playgroud)

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