将对象深层复制到另一个对象?

时间:2019-07-19 09:03:00

标签: java pojo apache-commons-beanutils

我正在执行UPDATE操作,以便将传入POJO中设置的所有non-null属性都复制到另一个对象(相同类型)中,并且嵌套属性也会发生这种情况。

例如:

POJO:

public class Person {

    private String homePhoneNumber;
    private String officePhoneNumber;

    private Address address;

    public String getHomePhoneNumber() {
        return homePhoneNumber;
    }

    // getter/setters


}

public class Address {

    private String street;
    private String houseNumber;

    public String getStreet() {
        return street;
    }
    // getter/setters
}

//  Source

    Person sourcePerson = new Person();
    sourcePerson.setHomePhone("123");

    Address address1 = new Address();
    address1.setStreet("Street");

    sourcePerson.setAddress(address1);

//Dest person

    Person destPerson = new Person();
    destPerson.setOfficePhone("456");
    destPerson.setHomePhone("123");

    Address address2 = new Address();
    address2.setStreet("Street2");
    address2.setHouseNumber("246");

    destPerson.setAddress(address2);

    BeanUtils.copyProperties(destPerson, sourcePerson); 

因此,我想复制non-null中设置的所有sourcePerson属性,以复制到destPerson中,即覆盖destperson的那些属性, sourcePerson已设置,其他属性保持不变。

BeeanUtils.copyProperties()不适用于嵌套属性。

是否有一种方法可以通过BeanUtils来实现?

0 个答案:

没有答案