【问题标题】:How to merge two objects in Java Spring Boot application?如何在 Java Spring Boot 应用程序中合并两个对象?
【发布时间】:2019-09-02 05:35:05
【问题描述】:

我需要在 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 方法后,项目对象仍包含 Description 字段的原始值。

在 Java Spring 中最好的方法是什么?

【问题讨论】:

标签: java spring mapping


【解决方案1】:

spring beans 库中有一个 BeanUtils 类。

BeanUtils.copyProperties(source, target);

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2019-06-24
      • 1970-01-01
      • 2021-02-24
      • 2014-09-12
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多