BeanUtils中copyProperties方法的使用

问题来源

在做三方系统的时候有很多时候需要调用对方的API来获取数据,例如我们根据商品订单ID调用对方的API获取订单信息,然后封装成为一个JavaBean,然后我们需要将这个Bean的属性的值赋给我们的Bean,这样重复使用Get方法会导致代码显得很臃肿,也增加了很多重复性的工作。

例子

public class Person {

    private int id;
    private String name;
    private int age;

    getter/setter... 
}
public class User{

    private int id;
    private String name;
    private int age;

    getter/setter... 
}

不使用Utils之前

  User user = new User();
  user.setId(person.getId());
   .....

使用Utils之后

  User user = new User();
  BeanUtils.copyProperties(user,person);

这是User和Person的字段值都相同的情况下,如果有些字段不相同呢?
没关系

我们给User新加一个字段:

private String description;
public void BeanUtilsTest() {
       //模拟数据,
        Person p = new Person();
        p.setName("lisi");
        p.setId(1);
        p.setAge(22);
                
        User user = new User();
        try {
           //使用utils
            BeanUtils.copyProperties(user, p);
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println(user.getAge());//22
        System.out.println(user.getDescription());//null
    }

总结

如果有相同字段,Utils会给赋值过去,如果没有,就默认为初始值。例如int就是0,String就是null。

你可能感兴趣的:(BeanUtils中copyProperties方法的使用)