java實體物件與Map轉換
阿新 • • 發佈:2018-11-08
import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.Map; public class MapUtil { /** * 實體物件轉成Map * @param obj 實體物件 * @return */ public static <T,V> Map<T, V> object2Map(Object obj) { Map<T, V> map = new HashMap<>(); if (obj == null) { return map; } Class clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); try { for (Field field : fields) { field.setAccessible(true); map.put((T)field.getName(), (V)field.get(obj)); } } catch (Exception e) { e.printStackTrace(); } return map; } /** * Map轉成實體物件 * @param map map實體物件包含屬性 * @param clazz 實體物件型別 * @return */ public static <T,K,V> T map2Object(Map<K, V> map, Class<T> clazz) { if (map == null) { return null; } T obj = null; try { obj = clazz.newInstance(); Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } field.setAccessible(true); field.set(obj, map.get(field.getName())); } } catch (Exception e) { e.printStackTrace(); } return obj; } }
使用場景
//實時表資料更新
MonitorDeviceTemp selectByPrimaryKey = mapper.selectByPrimaryKey(monitorDeviceTemp.getTempId());
Map<Object, Object> objectObjectMap = MapUtil.object2Map(selectByPrimaryKey);
MonitorDevice monitorDevice = MapUtil.map2Object(objectObjectMap, MonitorDevice.class);