java - 如何在不实例化的情况下从对象填充项目列表

标签 java spring-boot mapstruct

我有一个已填充的对象列表,我需要从对象中填充更多属性。

考虑使用mapperstruct,我无法修改目标列表中对象的先前属性。

// type for obj in list target
public class ObjectExampleA {

    private String id;
    private String firstAttr;
    private String secondAttr;
    private String thirdAttr;
}

// target list
// List<ObjectExampleA> listTarget;

// at this point considering an elements in list like this...
// {"id":1, "firstAttr":"blue", "secondAttr":"black", "thirdAttr": null}
// {"id":2, "firstAttr":"gray", "secondAttr":"red", "thirdAttr": null}

// source obj 
public class ObjectExampleB {

    private String thirdAttr;
}

// I need to populate all thirdAttr atribute of all elements in listTarget from ObjectExampleB.thirdAttr value


@Mapper(componentModel = "spring")
public interface ExampleMapper {

    void populateThirdAttrInList(@MappingTarget List<ObjectExampleA> listTarget, ObjectExampleB objectExampleB);
}

最佳答案

执行集合元素的更新并不总是微不足道的。但是,您的情况可以通过更新 ObjectExampleA 以简单的方式解决。

例如

@Mapper(componentModel = "spring")
public interface ExampleMapper {

    default void populateThirdAttrInList(@MappingTarget List<ObjectExampleA> listTarget, ObjectExampleB objectExampleB) {
        for(ObjectExampleA exampleA: listTarget) {
            populateThirdAttr(exampleA, objectExampleB);
        }
    }

    void populateThirdAttr(@MappingTarget ObjectExampleA exampleA, ObjectExampleB exampleB);
}

关于java - 如何在不实例化的情况下从对象填充项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57191152/

相关文章:

java - 当泛型类型具有继承结构时,如何在 Mapstruct 中映射集合?

spring - Mapstruct 1.2.0 未在 springboot 2.0.0.M3 + lombok 中生成映射器类

spring - Spring Boot 2.0.1 中未提供执行器/refresh

java - LibGDX - 改变纹理亮度

java - 循环内的监听器不允许更改外部 boolean 标志

java - 使用 SharedPreferences 的 ClassCastException

java - 如何正确使用 UUID 作为我的 @Entity 的 @Id?

将网关连接到服务激活器的 Spring 集成

mapstruct - 如何将嵌套引用展平为一个简单的目标?

java - 线程内的代码比线程外的慢..?