Map 与实体类相互转换

时间:2025-02-16 10:57:53

方法1

  1. 在 中引入依赖包
<dependency>
   <groupId></groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.54</version>
</dependency>
  1. 在控制类中引入
import ;
  1. 类型转换
((源数据), 转换后数据类型.class);

例子:

// 将 Map 转换为 实体类
User user = ((user01), );
(user);
// 将 实体类 转换为 Map
Map map = ((user), );
(map);


方法2

实体转map

//利用反射
public static Map<String, Object> objectToMap(Object obj) {
        Map<String, Object> map = new HashMap<>();
        if (obj == null) {
            return map;
        }
        Class clazz = ();
        Field[] fields = ();
        try {
            for (Field field : fields) {
                (true);
                    ((), (obj));
            }
        } catch (

        Exception e) {
            ();
        }
        return map;
    }

转实体类
该方法有个缺陷,实体类必须有无参的构造方法,否则newInstance方法根据反射构造实体类时会报错。

/**
     * Map转成实体对象
     * @param map map实体对象包含属性
     * @param clazz 实体对象类型
     * @param  flag map的key是下划线(和数据库字段名称一致)命名则为true,key是驼峰命名则为false
     * @return
     */
    public static Object map2Object(Map<String, Object> map, Class<?> clazz, boolean flag) {
        if (map == null) {
            return null;
        }
        Object obj = null;
        try {
            obj = ();

            Field[] fields = ().getDeclaredFields();
            for (Field field : fields) {
                int mod = ();
                if ((mod) || (mod)) {
                    continue;
                }
                (true);
                if (flag)
                    (obj, (HumpToUnderline(())));
                else
                    (obj, ((())));
            }
        } catch (Exception e) {
            ();
        }
        return obj;
    }