1. 程式人生 > >BeanUtils(bean屬性-->map; map-->bean屬性)

BeanUtils(bean屬性-->map; map-->bean屬性)

一、傳遞任意一個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; }