Map与实体类互转

    技术2023-11-17  84

    Map与实体类互转

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

    /** * Map转实体类 * @param clazz 实体类的class文件 * @param map 存放数据的map * @param <T> 实体类类型 * @return 传入的实体类类型 */ public static <T> T getClass(Class<T> clazz, Map<String, Object> map) { T t = null; try { t = clazz.newInstance(); Field[] fields = clazz.getDeclaredFields(); Map<String, Field> fieldMap = Collections.synchronizedMap(new HashMap<>()); for (Field field : fields) { fieldMap.put(field.getName(), field); } for (Map.Entry<String, Object> 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 <T> 实体类类型 * @return 传入的实体类类型 */ public static <T> List<T> getClassList(Class<T> clazz, List<Map<String, Object>> list) { List<T> ls = new ArrayList<>(); for (Map<String, Object> map : list) { ls.add(getClass(clazz,map)); } return ls; } /** * 实体类转map * @param object 实体对象 * @return map<String,Object> */ public static Map<String,Object> getMap(Object object){ return getMap(true,object); } /** * 实体类转map * @param flag 空值属性是否保存进map(默认true:保存) * @param object 实体对象 * @return map<String,Object> */ public static Map<String,Object> getMap(boolean flag,Object object){ Map<String,Object> 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<Map<String,Object>> */ public static List<Map<String,Object>> getMapList(List<Object> list){ List<Map<String,Object>> maps = new ArrayList<>(); for (Object o : list) { maps.add(getMap(true,o)); } return maps; } /** * 实体类集合转map集合 * @param flag 空值属性是否保存进map(默认true:保存) * @param list 实体集合 * @return List<Map<String,Object>> */ public static List<Map<String,Object>> getMapList(boolean flag,List<Object> list){ List<Map<String,Object>> maps = new ArrayList<>(); for (Object o : list) { maps.add(getMap(flag,o)); } return maps; }
    Processed: 0.014, SQL: 9