|
@@ -5,13 +5,18 @@ import org.apache.commons.beanutils.BeanUtils;
|
|
|
import org.apache.commons.beanutils.ConvertUtils;
|
|
import org.apache.commons.beanutils.ConvertUtils;
|
|
|
import org.apache.commons.beanutils.Converter;
|
|
import org.apache.commons.beanutils.Converter;
|
|
|
import org.apache.commons.beanutils.PropertyUtils;
|
|
import org.apache.commons.beanutils.PropertyUtils;
|
|
|
|
|
+import org.springframework.cglib.beans.BeanCopier;
|
|
|
|
|
+import org.springframework.cglib.beans.BeanMap;
|
|
|
|
|
|
|
|
|
|
+import java.lang.reflect.Field;
|
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @ClassName BeanConvertUtil
|
|
* @ClassName BeanConvertUtil
|
|
@@ -50,6 +55,7 @@ public final class BeanConvertUtil {
|
|
|
}
|
|
}
|
|
|
}, Date.class);
|
|
}, Date.class);
|
|
|
|
|
|
|
|
|
|
+
|
|
|
ConvertUtils.register(new Java110StringConvert(), String.class);
|
|
ConvertUtils.register(new Java110StringConvert(), String.class);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -67,13 +73,38 @@ public final class BeanConvertUtil {
|
|
|
public static <T1, T2> T2 covertBean(T1 orgBean, T2 dstBean) {
|
|
public static <T1, T2> T2 covertBean(T1 orgBean, T2 dstBean) {
|
|
|
|
|
|
|
|
try {
|
|
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) {
|
|
} catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
throw new RuntimeException("bean转换bean失败", e);
|
|
throw new RuntimeException("bean转换bean失败", e);
|
|
|
}
|
|
}
|
|
|
return dstBean;
|
|
return dstBean;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private static void objectFieldsPutMap(Object dstBean, BeanMap beanMap, Map orgMap) {
|
|
|
|
|
+ Field[] fields = dstBean.getClass().getDeclaredFields();
|
|
|
|
|
+ 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);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 对象A转为对象B (类)
|
|
* 对象A转为对象B (类)
|
|
|
* 这个也支持map转bean
|
|
* 这个也支持map转bean
|
|
@@ -89,7 +120,7 @@ public final class BeanConvertUtil {
|
|
|
T2 returnModel = null;
|
|
T2 returnModel = null;
|
|
|
try {
|
|
try {
|
|
|
returnModel = t.newInstance();
|
|
returnModel = t.newInstance();
|
|
|
- BeanUtils.copyProperties(returnModel, orgBean);
|
|
|
|
|
|
|
+ covertBean(orgBean, returnModel);
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
throw new RuntimeException("bean转换bean失败", e);
|
|
throw new RuntimeException("bean转换bean失败", e);
|
|
@@ -123,15 +154,17 @@ public final class BeanConvertUtil {
|
|
|
* @return map对象
|
|
* @return map对象
|
|
|
*/
|
|
*/
|
|
|
public static Map beanCovertMap(Object orgBean) {
|
|
public static Map beanCovertMap(Object orgBean) {
|
|
|
- Map newMap = null;
|
|
|
|
|
|
|
|
|
|
|
|
+ Map<String, Object> map = new HashMap();
|
|
|
try {
|
|
try {
|
|
|
- newMap = PropertyUtils.describe(orgBean);
|
|
|
|
|
|
|
+ BeanMap beanMap = BeanMap.create(orgBean);
|
|
|
|
|
+ for (Object key : beanMap.keySet()) {
|
|
|
|
|
+ map.put(key + "", beanMap.get(key));
|
|
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("bean转换Map失败", e);
|
|
throw new RuntimeException("bean转换Map失败", e);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- return newMap;
|
|
|
|
|
|
|
+ return map;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|