From 9c24b92bb786dbdcc3f69f7d4110f9e77baf1748 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 28 一月 2020 20:02:40 +0800
Subject: [PATCH] 修复对象转换bug
---
java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java | 47 +++++++++++++++++++++++++++++++++++++++++------
1 files changed, 41 insertions(+), 6 deletions(-)
diff --git a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java b/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
index ec1ebc7..b554b43 100644
--- a/java110-utils/src/main/java/com/java110/utils/util/BeanConvertUtil.java
+++ b/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 杞琩ate
+ 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;
}
--
Gitblit v1.8.0