栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JavaBean与Map之间的互相转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaBean与Map之间的互相转换

注:文章皆为个人纪录,可用性请以最终结果为准,若有错还请大佬们指出,谢谢!

 工具作用:

        JavaBean 与 Map 的互相转换

方式一:Hutool  步骤一:引入依赖
5.6.6  


		
			cn.hutool
			hutool-all
			${hutool.util.version}
		
步骤二:调用方式
package cn.hutool.core.bean 包下的 BeanUtil
JavaBean --> Map
​​​

Map --> JavaBean     5.6.6 版本下,部分API过期

 方式二:自己封装工具类
package com.paycool.inpay.core.utils;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;


public class BeanMapUtils {
    
    public static Map beanToMap(Object bean) {
        if (bean == null) {
            return null;
        } else {
            HashMap hashMap = new HashMap<>();

            try {
                Class c = bean.getClass();
                Method[] methods = c.getMethods();

                for (Method method : methods) {
                    String name = method.getName();
                    String key = "";
                    if (name.startsWith("get")) {
                        key = name.substring(3);
                    }

                    if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0) {
                        if (key.length() == 1) {
                            key = key.toLowerCase();
                        } else if (!Character.isUpperCase(key.charAt(1))) {
                            key = key.substring(0, 1).toLowerCase() + key.substring(1);
                        }

                        if (!"class".equals(key.toLowerCase())) {
                            Object value = method.invoke(bean);
                            if (value != null) {
                                hashMap.put(key, value);
                            }
                        }
                    }
                }
            } catch (Throwable var9) {
                var9.printStackTrace();
            }

            return hashMap;
        }
    }

    
    public static  T mapToBean(Class clazz, Map map) {
        T bean = null;
        try {
            bean = clazz.newInstance();
            for (Map.Entry stringObjectEntry : map.entrySet()) {
                String key = stringObjectEntry.getKey();
                Object value = stringObjectEntry.getValue();
                // 去这个类及其父类递归找到这个属性
                Field field = getClassField(clazz, key);
                if (field != null) {
                    // 获取属性的set方法
                    String methodName = "set" + key.substring(0, 1).toUpperCase() + key.substring(1);
                    Method method = clazz.getMethod(methodName, field.getType());
                    method.invoke(bean, value);
                }
            }
        } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
            e.printStackTrace();
        }
        return bean;
    }

    private static Field getClassField(Class clazz, String fieldName) {
        Field[] declaredFields = clazz.getDeclaredFields();
        for (Field declaredField : declaredFields) {
            if (declaredField.getName().equals(fieldName)) {
                return declaredField;
            }
        }
        // 如果找不到对应属性。递归去父类找
        Class superclass = clazz.getSuperclass();
        if (null != superclass) {
            return getClassField(superclass, fieldName);
        }
        return null;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/630930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号