第一步:导依赖
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
第二步:
//把product 中的 属性 复制到 selectProduct中
PropertyUtils.copyProperties(selectProduct,product);
小结:该工具类性能方面差
beanUtils工具类
使用beanUtils拷贝属性的实体类需要有以下条件:
- BeanUtils解析的bean必须被public修饰
- bean必须提供空参的构造器
- 成员变量必须被private修饰
- 必须提供set get方法
- 两个拷贝类之间字段名一致
BeanUtils.copyProperties()和PropertyUtils.copyProperties()的差别:
- 效率由高到底:get/set 》PropertyUtils 》BeanUtils。
- BeanUtils.copyProperties()可以在一定范围内进行类型转换,同时还要注意一些不 能转换时候,会将默认null值转化成0;
PropertyUtils.copyProperties()则是严格的类型转化,必须类型和属性名完全一致才 转化。 - 对于null的处理:PropertyUtils支持为null的场景;BeanUtils对部分属性不支持null,具体如下:
a. java.util.Date类型不支持,但是它的自雷java.sql.Date是被支持的。java.util.Date直接copy会报异常;
b. Boolean,Integer,Long等不支持,会将null转化为0;
c. String支持,转化后依然为null。