import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import java.beans.PropertyDescriptor; import java.util.HashSet; import java.util.Set; /** * 实体复制工具类 * * @author: LiC * @date: 2018/08/07 **/ public class EntityUtils { /** * 返回实体中值为null的属性 * * @param Object source * @return String[] * @author LiC * @date 2018/8/7 */ public static String[] getNullPropertyNames (Object source) { final BeanWrapper src = new BeanWrapperImpl(source); PropertyDescriptor[] pds = src.getPropertyDescriptors(); Set<String> emptyNames = new HashSet<>(); for(PropertyDescriptor pd : pds) { Object srcValue = src.getPropertyValue(pd.getName()); if (srcValue == null) emptyNames.add(pd.getName()); } String[] result = new String[emptyNames.size()]; return emptyNames.toArray(result); } /** * 将原实体中与目标实体中属性相同的值赋给目标实体(不考虑值为null) * * @param Object source 原实体 * @param Object target 目标实体 * @author LiC * @date 2018/8/7 */ public static void copyEntity(Object source, Object target) { BeanUtils.copyProperties(source, target); } /** * 将原实体中与目标实体中属性相同的值赋给目标实体(原实体中null的属性不会复制) * * @param Object source 原实体 * @param Object target 目标实体 * @author LiC * @date 2018/8/7 */ public static void copyEntityNotNull(Object source, Object target) { BeanUtils.copyProperties(source, target, getNullPropertyNames(source)); } }
实体类控制工具
最新推荐文章于 2023-08-07 13:25:18 发布