我有一个已填充的对象列表,我需要从对象中填充更多属性。
考虑使用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/