直接用以下工具类即可:
public class MyBeanUtil {
/**
* 获取所有的属性值为空属性名数组
* @param obj
* @return
*/
public static String[] getNullPropertyNames(Object obj) {
BeanWrapper beanWrapper = new BeanWrapperImpl(obj);
PropertyDescriptor[] pds = beanWrapper.getPropertyDescriptors();
List<String> nullPropertyNames = new ArrayList<>();
for (PropertyDescriptor pd : pds) {
String propertyName = pd.getName();
if (beanWrapper.getPropertyValue(propertyName) == null) {
nullPropertyNames.add(propertyName);
}
}
return nullPropertyNames.toArray(new String[nullPropertyNames.size()]);
}
}
//然后在使用复制功能的时候,如下:
BeanUtils.copyProperties(newUser, oldUser, MyBeanUtil.getNullPropertyNames(newUser));
ok