|
|
@@ -1,136 +0,0 @@
|
|
|
-package com.xunmei.common.core.utils;
|
|
|
-
|
|
|
-import org.apache.commons.lang3.ArrayUtils;
|
|
|
-import org.apache.commons.lang3.StringUtils;
|
|
|
-import org.springframework.beans.BeanUtils;
|
|
|
-import org.springframework.beans.BeanWrapper;
|
|
|
-import org.springframework.beans.PropertyAccessorFactory;
|
|
|
-
|
|
|
-import java.beans.PropertyDescriptor;
|
|
|
-import java.lang.reflect.Field;
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-/**
|
|
|
- * Tkk
|
|
|
- */
|
|
|
-public class BeanHelper {
|
|
|
-
|
|
|
- /**
|
|
|
- * 主要过滤 null 值
|
|
|
- *
|
|
|
- * @param target
|
|
|
- * @param source
|
|
|
- */
|
|
|
- public static void copyProperties(Object target, Object source) {
|
|
|
- BeanUtils.copyProperties(source, target, getNullPropertyNames(source));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 主要过滤 null 值
|
|
|
- *
|
|
|
- * @param oldValue
|
|
|
- * @param newValue
|
|
|
- */
|
|
|
- public static void copyProperties(Object oldValue, Object newValue, String... exclude) {
|
|
|
- BeanUtils.copyProperties(newValue, oldValue, getNullPropertyNames(newValue, exclude));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 忽略为null的数据
|
|
|
- *
|
|
|
- * @param source
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static String[] getNullPropertyNames(Object source, String... ignores) {
|
|
|
- BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess(source);
|
|
|
- PropertyDescriptor[] pds = beanWrapper.getPropertyDescriptors();
|
|
|
- List<String> ignoreList = new LinkedList<>();
|
|
|
- for (PropertyDescriptor pd : pds) {
|
|
|
- if (pd.getWriteMethod() == null) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- Object srcValue = beanWrapper.getPropertyValue(pd.getName());
|
|
|
- if (srcValue == null) {
|
|
|
- ignoreList.add(pd.getName());
|
|
|
- }
|
|
|
- }
|
|
|
- String[] result = ignoreList.toArray(new String[ignoreList.size()]);
|
|
|
- return ignores == null ? result : ArrayUtils.addAll(result, ignores);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- public static void setNullPropertiesDefValue(Object obj) {
|
|
|
- //获取实体类的所有属性,返回Field数组
|
|
|
- // Field[] fields = obj.getClass().getDeclaredFields();
|
|
|
- Field[] fields = getAllFields(obj.getClass());
|
|
|
- //遍历所有属性
|
|
|
- for (int j = 0; j < fields.length; j++) {
|
|
|
- Field field = fields[j];
|
|
|
- String type = field.getGenericType().toString();
|
|
|
- field.setAccessible(true);
|
|
|
- Object value = null;
|
|
|
- try {
|
|
|
- value = field.get(obj);
|
|
|
- if (value != null && StringUtils.isNotBlank(value.toString())) {
|
|
|
- continue;
|
|
|
- }
|
|
|
- //如果type是类类型,则前面包含"class ",后面跟类名
|
|
|
- switch (type) {
|
|
|
- case "class java.lang.String":
|
|
|
- field.set(obj, StringUtils.EMPTY);
|
|
|
- break;
|
|
|
- case "class java.math.BigDecimal":
|
|
|
- field.set(obj, BigDecimal.ZERO);
|
|
|
- break;
|
|
|
- case "class java.util.Date":
|
|
|
- field.set(obj, new Date());
|
|
|
- break;
|
|
|
- case "class java.lang.Integer":
|
|
|
- field.set(obj, 0);
|
|
|
- break;
|
|
|
- case "class java.lang.Character":
|
|
|
- field.set(obj, '0');
|
|
|
- break;
|
|
|
- case "class java.lang.Short":
|
|
|
- field.set(obj, Short.valueOf((short) 0));
|
|
|
- break;
|
|
|
- case "class java.lang.Byte":
|
|
|
- field.set(obj, Byte.valueOf((byte) 0));
|
|
|
- break;
|
|
|
- case "class java.lang.Double":
|
|
|
- field.set(obj, 0D);
|
|
|
- break;
|
|
|
- case "class java.lang.Float":
|
|
|
- field.set(obj, 0F);
|
|
|
- break;
|
|
|
- case "class java.lang.Long":
|
|
|
- field.set(obj, 0L);
|
|
|
- break;
|
|
|
- case "class java.lang.Boolean":
|
|
|
- field.set(obj, false);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- } catch (IllegalAccessException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- /**
|
|
|
- * 获取本类及其父类的属性的方法
|
|
|
- *
|
|
|
- * @param clazz 当前类对象
|
|
|
- * @return 字段数组
|
|
|
- */
|
|
|
- private static Field[] getAllFields(Class<?> clazz) {
|
|
|
- List<Field> fieldList = new ArrayList<>();
|
|
|
- while (clazz != null) {
|
|
|
- fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
|
|
|
- clazz = clazz.getSuperclass();
|
|
|
- }
|
|
|
- Field[] fields = new Field[fieldList.size()];
|
|
|
- return fieldList.toArray(fields);
|
|
|
- }
|
|
|
-}
|