- BeanUtils.copyProperties(Object source, Object target)
将source的属性值赋值给target,省去了一大段的set get。
当源类和目标类中的属性名不同的时候,copyProperties方法会自动不做处理,所以如果有不同名称或类型想赋值的需要自己手动操作。
1、首先准备两个类,一个源类一个目标类,set和get和构造方法就省略不写了,领会精神。
除了属性名相同的name和age,People类中的str要赋值给User类中的var,但是两个类型不同,copyProperties不会做处理,需要手动处理,把str转换成list,然后set get。
//Target Class
public class User {
private String name;
private int age;
private List<String> var;
}
//Source Class
public class People {
private String name;
private int age;
private String addr;
private String num;
private String str;
}
2、测试类
public class Test {
public static void main(String[] args) {
User user = new User();
People people = new People("zhangsan", 20, "hebei", "12345", "pk1,pk2");
BeanUtils.copyProperties(people, user);
//如果没有这一步,User中的var值为null
List<String> str = Arrays.asList(people.getStr().split(","));
user.setVar(str);
System.out.println(user);
}
}
结果如下
- copyProperties(Object source, Object target, String… ignoreProperties)
spring还提供了可以忽略某些参数的方法。
//忽略name不赋值
String[] ignoreProperties = {"name"};
BeanUtils.copyProperties(people, user, ignoreProperties);
结果如下