Map与实体类互转

Map与实体类互转

注: final修饰符修饰的属性不会进行赋值;
map中的key必须和实体中的属性名相同

/**
     * Map转实体类
     * @param clazz 实体类的class文件
     * @param map   存放数据的map
     * @param    实体类类型
     * @return      传入的实体类类型
     */
    public static  T getClass(Class clazz, Map map) {
        T t = null;
        try {
            t = clazz.newInstance();
            Field[] fields = clazz.getDeclaredFields();
            Map fieldMap = Collections.synchronizedMap(new HashMap<>());
            for (Field field : fields) {
                fieldMap.put(field.getName(), field);
            }
            for (Map.Entry entry : map.entrySet()) {
                Field field = fieldMap.get(entry.getKey());
                if (field == null) {
                    continue;
                }
                if (Modifier.isFinal(field.getModifiers())) {
                    continue;
                }
                try {
                    field.setAccessible(true);
                    field.set(t, entry.getValue());
                } catch (Exception e) {
                    continue;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }

    /**
     * Map转实体类
     * @param clazz 实体类的class文件
     * @param list   存放数据的集合
     * @param    实体类类型
     * @return      传入的实体类类型
     */
    public static  List getClassList(Class clazz, List> list) {
        List ls = new ArrayList<>();
        for (Map map : list) {
            ls.add(getClass(clazz,map));
        }
        return ls;
    }

    /**
     * 实体类转map
     * @param object    实体对象
     * @return          map
     */
    public static Map getMap(Object object){
        return getMap(true,object);
    }

    /**
     * 实体类转map
     * @param flag      空值属性是否保存进map(默认true:保存)
     * @param object    实体对象
     * @return          map
     */
    public static Map getMap(boolean flag,Object object){
        Map map = Collections.synchronizedMap(new HashMap<>());
        Field[] fields = object.getClass().getDeclaredFields();
        for (Field field : fields) {
            try{
                field.setAccessible(true);
                Object o = field.get(object);
                if(flag || o != null){
                    map.put(field.getName(),o);
                }
            }catch (Exception e){
                continue;
            }
        }
        return map;
    }

    /**
     * 实体类集合转map集合
     * @param list  实体集合
     * @return      List>
     */
    public static List> getMapList(List list){
        List> maps = new ArrayList<>();
        for (Object o : list) {
            maps.add(getMap(true,o));
        }
        return maps;
    }

    /**
     * 实体类集合转map集合
     * @param flag  空值属性是否保存进map(默认true:保存)
     * @param list  实体集合
     * @return      List>
     */
    public static List> getMapList(boolean flag,List list){
        List> maps = new ArrayList<>();
        for (Object o : list) {
            maps.add(getMap(flag,o));
        }
        return maps;
    }
 
  

                            
                        
                    
                    
                    

你可能感兴趣的:(工具类,java)