【实用工具】实体类和Map互转

文章展示了如何使用Java编写一个工具类PojoUtil,该类包含两个静态方法,分别用于将实体类转换为Map和将Map转换回实体类。示例中,实体类为Student,包含了学期id、班级id、学生id和学生名称等属性。
摘要由CSDN通过智能技术生成

实体类

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @ToString
    public static class Student {
        private Long termId;//学期id
        private Long classId;//班级id
        private Long studentId;//班级id
        private String name;//学生名称
    }

转换工具类

public class PojoUtil {

    public static Map<String, Object> pojoToMap(Object object) {
        Map<String, Object> map = new HashMap();
        Field[] fields = object.getClass().getDeclaredFields();//暴力反射获取所有字段
        for (Field field : fields) {
            field.setAccessible(true);
            try {
                if (field.get(object) != null) {
                    map.put(field.getName(), field.get(object));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return map;
    }

    public static Object mapToPojo(Map<String, Object> map, Class<?> pojo) {
        Object object = null;
        try {
            object = pojo.newInstance();
            Field[] fields = object.getClass().getDeclaredFields();
            for (Field field : fields) {
                int modifier = field.getModifiers();
                if (Modifier.isStatic(modifier) || Modifier.isFinal(modifier)) {
                    continue;
                }
                field.setAccessible(true);
                field.set(object, map.get(field.getName()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return object;
    }
}

测试效果

public class PojoTest {

    public static void main(String[] args) {
        Student student = new Student(1l, null, 2l, "ccc");
        Map<String, Object> dataMap = PojoUtil.pojoToMap(student);
        System.out.println(dataMap);
        System.out.println(PojoUtil.mapToPojo(dataMap, Student.class));
    }

输出结果:

{studentId=2, termId=1, name=ccc}
PojoTest.Student(termId=1, classId=null, studentId=2, name=ccc)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值