BeanUtils(bean屬性-->map; map-->bean屬性)
阿新 • • 發佈:2019-01-26
一、傳遞任意一個JavaBean物件,將該物件中的全部屬性封裝成到HashMap
public static Map<String,Object> bean2Map(Object bean) throws Exception{
if(bean == null){
return null;
}
Map<String,Object> resultMap = new HashMap<String,Object>();
//1、先獲取bean的Clss物件(即位元組碼檔案)
Class beanClass = bean.getClass();
//2、通過位元組碼檔案獲取bean中的所有欄位
Field[] fields = beanClass.getDeclaredFields();
//3、分別取出欄位的欄位名和欄位值(欄位名作為map中的key,欄位值作為map的value)
for(Field field:fields){
field.setAccessible(true); //設定屬性的可訪問行
String fieldName = field.getName();//得到bean中的屬性名
Object fieldValue = field.get(bean); //得到bean中對應的屬性值
resultMap.put(fieldName, fieldValue);
}
return resultMap;
}
二、傳遞一個沒有屬性值的bean物件,傳遞一個有資料的map,
將map中的資料封裝到bean中
public static Object map2Bean(Map<String,Object> map,Object bean) throws Exception{
try {
if(map == null || bean == null){
return null;
}
//1.獲取bean的位元組碼檔案
Class beanClass = bean.getClass();
for (Map.Entry<String, Object> entry : map.entrySet()){
//2.獲取key => value的資料記錄
String key = entry.getKey();
Object value = entry.getValue();
//3.通過位元組碼、key獲取相應的Field物件
Field field = beanClass.getDeclaredField(key);
//4.將value值儲存到bean物件的屬性中去
field.setAccessible(true);
field.set(bean, value);
}
} catch (NoSuchFieldException e) {
System.out.println("map中的key與實體中的屬性名不匹配!");
}
return bean;
}