在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条评论
点击登录参与评论