BeanUtils.copyProperties
方法是 Apache Commons BeanUtils 库中提供的一个工具方法,用于将一个对象的属性值复制到另一个对象中。该方法使用了反射来实现属性值的复制,可以方便地处理对象之间属性的拷贝操作。
应用案例
案例一(两个无关的类做属性拷贝)
@Data
public class User {
private String id;
private String name;
private String age;
private String account;
private String password;
}
@Data
public class Person {
private String id;
private String name;
private String age;
private String sex;
}
public class Test {
public static void main(String[] args) {
User user = new User();
user.setId("1");
user.setAge("2");
user.setName("wzh");
user.setAccount("wangzh");
user.setPassword("1111");
Person person = new Person();
BeanUtils.copyProperties(user,person);
}
}
结果
Person(id=1, name=wzh, age=2, sex=null)
通过上述测试我们就可以总结出相关结论,基本用法为
BeanUtils.copyProperties(source,target);
相当于把源对象source的属性值赋给目标对象target中与源对象source的中有着同属性名的属性,如上述案例中Person作为目标对象与源对象User中有着共同的同名属性id,name,age,所以person中的这三个字段被赋值成功,赋值的数据来源正是user对象,sex这个字段是Person类所特有的,所以不会被赋值,同时还要特别注意赋值操作相关类的属性一定要有对应的setter/getter,即
源对象source的属性拷贝值赋给目标对象target的过程中,属性名和属性类型都相同的属性才能被成功拷贝赋值,例如id,name,age这三个目标对象的属性被赋值成功,目标对象中的sex属性,由于源对象中没有同名的属性所以没法被赋值成功。
做赋值的属性一定要有对应的setter/getter才能成功赋值
参考文章链接:https://blog.csdn.net/wwwwwww31311/article/details/124939487