1.空属性赋值问题
这次开发使用的是BeanUtils.copyProperties(A,B)来完成的对象的更新。
BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
BeanUtils.copyProperties(A,B)的特点是:
- 无论是org.springframework.beans或者org.apache.commons.beanutils,与get/set方式相比,都存在性能问题。
- 效率由高到低:get/set >PropertyUtils >BeanUtils。
- PropertyUtils和BeanUtils两个工具类都是对bean之间存在属性名相同的属性进行处理,无论是源bean或者是目标bean中多出来的属性均不处理。
- 具体来说:BeanUtils.copyProperties()可以在一定范围内进行类型转换,同时还要注意一些不能转换时候,会将默认null值转化成0;
复制属性的时候,BeanUtils.copyProperties(a,b)会将a的所有属性全部赋值给b,如果a存在null属性,会将b属性原有数据覆盖,比如在更新一篇文章时,更新后的新文章创建时间如果置空,就会覆盖原来的创建时间,解决方案是遍历检查是否有null值
如下