如何使用 Modelmapper 从另一个对象更新对象字段

Aki*_*aMK 1 java copy object deep-copy modelmapper

我打算编写一个方法,用于更新具有MyObject另一个MyObject对象的非空字段的对象。

private void updateMyObject(MyObject sourceObject, MyObject destinationObject) {
    ModelMapper mapper = new ModelMapper();
    mapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
    mapper.map(sourceObject, destinationObject);
}

public class MyObject {
    long id;

    long durationInMilliSecounds;

    //...getters and setters 
}
Run Code Online (Sandbox Code Playgroud)

在这里destinationObject没有得到更新。任何人都可以建议此代码的问题。

Jan*_*sen 5

您似乎缺少一些代码。也许错误出在该代码中。我猜测您的模型没有 ModelMapper 所需的 getter 和 setter。

以下代码按预期工作:

public class modelMapperTest {
    public static void main(String[] args) {
    ModelMapper mapper = new ModelMapper();
    mapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());

    MyModel sor = new MyModel(null, 5);
    MyModel des = new MyModel("yyy", 0);        

    System.out.println(des);
    mapper.map(sor, des);
    System.out.println(des);
}
Run Code Online (Sandbox Code Playgroud)

public class MyModel {
    private String s;
    private int i;

public String getS() {
    return s;
}

public void setS(String s) {
    this.s = s;
}

public int getI() {
    return i;
}

public void setI(int i) {
    this.i = i;
}

public MyModel(String s, int i) {
    super();
    this.s = s;
    this.i = i;
}

@Override
public String toString() {
    return "MyModel [s=" + s + ", i=" + i + "]";
}

}
Run Code Online (Sandbox Code Playgroud)

印刷:

我的模型 [s=yyy, i=0]

我的模型 [s=yyy, i=5]