你的位置:首页 > Java教程

[Java教程]transfer between javabean and map


1. java bean 转化成 map

import java.beans.BeanInfo;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;public class BeanToMap {  public static Map<String, Object> transBean2Map(Object obj) {          if(obj == null){       return null;     }         Map<String, Object> map = new HashMap<String, Object>();     try {       BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());       PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();       for (PropertyDescriptor property : propertyDescriptors) {         String key = property.getName();          // 过滤class属性         if (!key.equals("class")) {           // 得到property对应的getter方法           Method getter = property.getReadMethod();           Object value = getter.invoke(obj);            map.put(key, value);         }       }     } catch (Exception e) {       System.out.println("transBean2Map Error " + e);     }     return map;   }   }

 

2. map transfer javabean

  2.1 (使用工具类BeanUtils)

import org.apache.commons.beanutils.BeanUtilspublic static void transMap2Bean(Object obj, Map map){    if(obj==null || map==null){      return ;    }    try {      BeanUtils.populate(obj, map);    } catch (IllegalAccessException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (InvocationTargetException e) {      // TODO Auto-generated catch block      e.printStackTrace();    }  }

  2.2 利用java内省

public static void transMap2Bean(Map<String, Object> map, Object obj) {          try {       BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());       PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();        for (PropertyDescriptor property : propertyDescriptors) {         String key = property.getName();          if (map.containsKey(key)) {           Object value = map.get(key);           // 得到property对应的setter方法           Method setter = property.getWriteMethod();           setter.invoke(obj, value);         }        }      } catch (Exception e) {       System.out.println("transMap2Bean Error " + e);     }      return;    }