在spring中复制对象可以使用org.springframework.beans.BeanUtils的copyProperties方法:
BeanUtils.copyProperties(object1,object2);
这样把object1的所有同名属性都会拷贝给object2,两个对象的类型并不要求相同。
默认会拷贝所有的属性,如果想只拷贝非空属性,需要做个工具类:
public class WanmaUtils {
//获得所有非空属性名
public static String[] getNullProps(Object object) {
final BeanWrapper beanWrapper = new BeanWrapperImpl(object);
java.beans.PropertyDescriptor[] propertyDescriptors = beanWrapper.getPropertyDescriptors();
Set<String> nullPropNames = new HashSet<String>();
for (java.beans.PropertyDescriptor propertyDescriptor : propertyDescriptors) {
Object propertyValue = beanWrapper.getPropertyValue(propertyDescriptor.getName());
if (propertyValue == null){
nullPropNames.add(propertyDescriptor.getName());
}
}
String[] nullPropNameArr = new String[nullPropNames.size()];
return nullPropNames.toArray(nullPropNameArr);
}
}这样拷贝的时候可以如下使用:
public void update(Movie object) {
Movie movie = movieRepository.getById(object.getId());
BeanUtils.copyProperties(object,movie, WanmaUtils.getNullProps(object));
movieRepository.save(movie);
}

0条评论
点击登录参与评论