欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Map与JavaBean相互转换的工具类 

程序员文章站 2023-01-28 11:27:56
下面就来分享工具类的内容:使用范围:javabean类对象的属性不能是数组、list、set、mappublic class mapbeanutil {    /**     * javabean转m...

下面就来分享工具类的内容:

使用范围:javabean类对象的属性不能是数组、listsetmap

public class mapbeanutil {

    /**
     * javabean转map
     * @param obj
     * @return
     */
    public static map<string, object> bean2map(object obj) {
        map<string, object> map = new linkedhashmap<>();
        class<?> clazz = obj.getclass();

        for (field field : clazz.getdeclaredfields()) {
            field.setaccessible(true);
            string fieldname = field.getname();
            object value = null;
            try {
                value = field.get(obj);
            } catch (illegalaccessexception e) {
                e.printstacktrace();
            }
            if (value == null){
                value = "";
            }
            map.put(fieldname, value);
        }
        return map;
    }

    /**
     * map转javabean
     * @param clazz
     * @param map
     * @param <t>
     * @return
     */
    public static <t> t map2bean(final class<t> clazz, final map<string, ? extends object> map) {
        if (map == null) {
            return null;
        }
        t res = null;
        try {
            res = clazz.getdeclaredconstructor().newinstance();
            //获取到所有属性,不包括继承的属性
            field[] fields = clazz.getdeclaredfields();
            for (field field : fields) {
                //获取字段的修饰符
                int mod = field.getmodifiers();
                if (modifier.isstatic(mod) || modifier.isfinal(mod)) {
                    continue;
                }
                //设置对象的访问权限
                field.setaccessible(true);
                //根据属性名称去map获取value
                if(map.containskey(field.getname())) {
                    //给对象赋值
                    field.set(res, map.get(field.getname()));
                }
            }
        } catch (exception e) {
            e.printstacktrace();
        }
        return res;
    }

    public static void main(string[] args) throws exception {
        hashmap<string, object> map = new hashmap<>();
        map.put("id", 1001);
        map.put("username", "zhangsan");
        map.put("password", "123456");
        map.put("nickname", "张三");
        map.put("email", "369950806@qq.com");
        map.put("gender", true);
        map.put("birth", localdate.now());
        map.put("avatar", "/aa/bb/ab.jpg");
        map.put("role", "vip");
        map.put("status", (byte) 1);
        map.put("salt", "ldfkasjghweoiq324");
        map.put("createtime", localdatetime.now());
        map.put("updatetime", localdatetime.now());

        user user = map2bean(user.class, map);
        system.out.println(user);

        map<string, object> res = bean2map(user);
        system.out.println(map);
    }
}

user类的代码:

public class user {
    private integer id;
    private string username;
    private string password;
    private string nickname;
    private string email;
    private boolean gender;
    private localdate birth;
    private string avatar;
    private string role;
    private byte status;
    private string salt;
    private localdatetime createtime;
    private localdatetime updatetime;
}

到此这篇关于map与javabean相互转换的工具类 的文章就介绍到这了,更多相关map与javabean相互转换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!