场景:前端通过POST提交一个JSON格式的字符串,比如里面的数据设计到的表有多个,我们需要创建一个实体类对涉及这多个表属性去进行接收。接收到以后,我们又需要通过这个对象获取相对应的值分别赋值到实体类中,对于大部分患有懒癌晚期程序员来说这是不可容忍的,所以我们就可以通过一些工具类来完成。
选择: Apache 的 BeanUtils 工具类 和 Spring 的 BeanUtils 工具类。
在https://www.jianshu.com/p/f52f00f949b7 这篇博客中提到。Apache的 BeanUitls 的对象拷贝 copyProperties 方法 效率很慢,阿里编码规范也提到尽量不要使用的该方法,所以可以使用 Spring 所提供的的 BeanUtils 的对象拷贝
对应的类需要实现geter seter 方法
举个栗子
实体类1
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {
private Integer id;
private String name;
private Character gender;
private String address;
private Integer age;
}
实体类2
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private Character gender;
}
测试
@Test
public void test(){
UserInfo userInfo = new UserInfo(1,"田坤",'男',"陕西西安",22);
User user = new User();
BeanUtils.copyProperties(userInfo,user);
System.out.println(user); // User(id=1, name=田坤, gender=男)
}