介绍
在开发中,经常在代码中会创建DO、SDO、DTO、VO等类,这些Bean中的大部分属性都是一样的,经常会将一个bean的属性赋值给另一个bean对象
例子
PersonDO类:
public class PersonDO {
private String id
private String name;
private Integer age;
//此处省略getter/setter方法
}
PersonDTO类:
public class PersonDTO {
private String name;
private String sex;
private Integer age;
//此处省略getter/setter方法
}
PersonDO pdo=new Person();
pdo.setId("123");
pdo.setName("lilei");
pdo.setAge(20)
PersonDTO pdto=new PersonDTO();
//如果属性很多,会写很多下面的set、get代码
pdto.setName(pdo.getName());
pdto.setAge(pdo.getAge());
使用工具类
如果两个对象之间属性大致相同,使用属性拷贝工具更简单方便,常用的有:
Spring BeanUtils(推荐)
Cglib BeanCopier
Apache BeanUtils
Apache PropertyUtils
下面是实现例子 和 性能对比
实现例子
Spring BeanUtils
需要 spring-beans.jar
PersonDTO personDTO = new PersonDTO();
org.springframework.beans.BeanUtils.copyProperties(, personDTO);
Cglib BeanCopier
PersonDTO personDTO = new PersonDTO();
BeanCopier copier = BeanCopier.create(PersonDO.class, PersonDTO.class, false);
copier.copy(personDO, personDTO, null);
Apache BeanUtils
PersonDTO personDTO = new PersonDTO();
BeanUtils.copyProperties(personDTO, personDO);
Apache PropertyUtils
PersonDTO personDTO = new PersonDTO();
PropertyUtils.copyProperties(personDTO, personDO);
性能
由上图性能对比可知,apache的2个类库不推荐;web开发中多会用到spring相关框架,所以推荐使用spring BeanUtils
