有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在JavaSpring引导应用程序中合并两个对象?

我需要在JavaSpring引导应用程序中合并对象(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字段的原始值

在JavaSpring中实现这一点的最佳方法是什么


共 (2) 个答案

  1. # 1 楼答案

    在SpringBeans库中有一个BeanUtils类

    BeanUtils.copyProperties(source, target);
    

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

  2. # 2 楼答案

    对于您的情况,您可以使用Apache或Springbean UTIL来完成

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

    在这两种情况下,参数的位置是不同的