1. 程式人生 > >Map物件與JavaBean互轉,List與List互轉等

Map物件與JavaBean互轉,List與List互轉等

直接上程式碼。 
下面的將map轉為JavaBean用到了泛型,適應性更強。 

將JavaBean轉為map物件還未做優化。

第三個方法和第四個方法是對前兩個方法的升級。

//關鍵包引用列舉一下
import com.sun.org.apache.commons.beanutils.BeanUtils;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
 /** 
     * 將 Map物件轉化為JavaBean   此方法已經測試通過
     * @author
wyply115 * @param type 要轉化的型別 * @param map * @return Object物件 * @version 2016年3月20日 11:03:01 */
public static <T> T convertMap2Bean(Map map, Class T) throws Exception { if(map==null || map.size()==0){ return null; } BeanInfo beanInfo = Introspector.getBeanInfo(T); T bean = (T)T.newInstance(); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for
(int i = 0, n = propertyDescriptors.length; i <n ; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); String upperPropertyName = propertyName.toUpperCase(); if (map.containsKey(upperPropertyName)) { Object value = map.get(upperPropertyName); //這個方法不會報引數型別不匹配的錯誤。
BeanUtils.copyProperty(bean, propertyName, value); //用這個方法對int等型別會報引數型別不匹配錯誤,需要我們手動判斷型別進行轉換,比較麻煩。 //descriptor.getWriteMethod().invoke(bean, value); //用這個方法對時間等型別會報引數型別不匹配錯誤,也需要我們手動判斷型別進行轉換,比較麻煩。 //BeanUtils.setProperty(bean, propertyName, value); } } return bean; } /** * 將 JavaBean物件轉化為 Map 此方法未測試 * @author wyply115 * @param bean 要轉化的型別 * @return Map物件 * @version 2016年3月20日 11:03:01 */ public static Map convertBean2Map(Object bean) throws Exception { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo .getPropertyDescriptors(); for (int i = 0, n = propertyDescriptors.length; i <n ; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ""); } } } return returnMap; } /** * 將 List<Map>物件轉化為List<JavaBean> 此方法已通過測試 * @author wyply115 * @param type 要轉化的型別 * @param map * @return Object物件 * @version 2016年3月20日 11:03:01 */ public static <T> List<T> convertListMap2ListBean(List<Map<String,Object>> listMap, Class T) throws Exception { List<T> beanList = new ArrayList<T>(); for(int i=0, n=listMap.size(); i<n; i++){ Map<String,Object> map = listMap.get(i); T bean = convertMap2Bean(map,T); beanList.add(bean); } return beanList; } /** * 將 List<JavaBean>物件轉化為List<Map> * @author wyply115 * @param type 要轉化的型別 * @param map * @return Object物件 * @version 2016年3月20日 11:03:01 */ public static List<Map<String,Object>> convertListBean2ListMap(List<Object> beanList) throws Exception { List<Map<String,Object>> mapList = new ArrayList<Map<String,Object>>(); for(int i=0, n=beanList.size(); i<n; i++){ Object bean = beanList.get(i); Map map = convertBean2Map(bean); mapList.add(map); } return mapList; }