wuxw
2020-01-28 9c24b92bb786dbdcc3f69f7d4110f9e77baf1748
java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
@@ -5,13 +5,19 @@
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.springframework.cglib.beans.BeanCopier;
import org.springframework.cglib.beans.BeanMap;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * @ClassName BeanConvertUtil
@@ -50,6 +56,7 @@
            }
        }, Date.class);
        ConvertUtils.register(new Java110StringConvert(), String.class);
    }
@@ -67,11 +74,37 @@
    public static <T1, T2> T2 covertBean(T1 orgBean, T2 dstBean) {
        try {
            BeanUtils.copyProperties(dstBean, orgBean);
            //BeanUtils.copyProperties(dstBean, orgBean);
            if (orgBean instanceof Map) {
                BeanMap beanMap = BeanMap.create(dstBean);
                //beanMap.putAll((Map)orgBean);
                objectFieldsPutMap(dstBean, beanMap, (Map) orgBean);
                return dstBean;
            }
            final BeanCopier beanCopier = BeanCopier.create(orgBean.getClass(), dstBean.getClass(), true);
            beanCopier.copy(orgBean, dstBean, new Java110Converter());
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("bean转换bean失败", e);
        }
        return dstBean;
    }
    private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map orgMap) {
        //Field[] fields = dstBean.getClass().getDeclaredFields();
        Field[] fields = FieldUtils.getAllFields(dstBean.getClass());
        for (Field field : fields) {
            if (!orgMap.containsKey(field.getName())) {
                continue;
            }
            Class dstClass = field.getType();
            //System.out.println("字段类型" + dstClass);
            Object value = orgMap.get(field.getName());
            //String 转date
            Object tmpValue = Java110Converter.getValue(value, dstClass);
            beanMap.put(field.getName(), tmpValue);
        }
    }
    /**
@@ -89,7 +122,7 @@
        T2 returnModel = null;
        try {
            returnModel = t.newInstance();
            BeanUtils.copyProperties(returnModel, orgBean);
            covertBean(orgBean, returnModel);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("bean转换bean失败", e);
@@ -123,15 +156,17 @@
     * @return map对象
     */
    public static Map beanCovertMap(Object orgBean) {
        Map newMap = null;
        Map<String, Object> map = new HashMap();
        try {
            newMap = PropertyUtils.describe(orgBean);
            BeanMap beanMap = BeanMap.create(orgBean);
            for (Object key : beanMap.keySet()) {
                map.put(key + "", beanMap.get(key));
            }
        } catch (Exception e) {
            throw new RuntimeException("bean转换Map失败", e);
        }
        return newMap;
        return map;
    }