浏览代码

add 新增 BeanCopyUtils#mapToMap 方法

疯狂的狮子li 2 年之前
父节点
当前提交
10f88f5458
共有 1 个文件被更改,包括 21 次插入1 次删除
  1. 21 1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java

+ 21 - 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/BeanCopyUtils.java

@@ -12,6 +12,7 @@ import org.springframework.cglib.beans.BeanCopier;
 import org.springframework.cglib.beans.BeanMap;
 import org.springframework.cglib.core.Converter;
 
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -135,6 +136,25 @@ public class BeanCopyUtils {
         return bean;
     }
 
+    /**
+     * map拷贝到map
+     *
+     * @param map   数据来源
+     * @param clazz 返回的对象类型
+     * @return map对象
+     */
+    public static <T, V> Map<String, V> mapToMap(Map<String, T> map, Class<V> clazz) {
+        if (MapUtil.isEmpty(map)) {
+            return null;
+        }
+        if (ObjectUtil.isNull(clazz)) {
+            return null;
+        }
+        Map<String, V> copyMap = new LinkedHashMap<>(map.size());
+        map.forEach((k, v) -> copyMap.put(k, copy(v, clazz)));
+        return copyMap;
+    }
+
     /**
      * BeanCopier属性缓存<br>
      * 缓存用于防止多次反射造成的性能问题
@@ -174,7 +194,7 @@ public class BeanCopyUtils {
         private String genKey(Class<?> srcClass, Class<?> targetClass, Converter converter) {
             final StringBuilder key = StrUtil.builder()
                 .append(srcClass.getName()).append('#').append(targetClass.getName());
-            if(null != converter){
+            if (null != converter) {
                 key.append('#').append(converter.getClass().getName());
             }
             return key.toString();