IT忍者神龟之 Map 对象与 JavaBean 对象互转工具类

 <dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>
 <dependency>

  <groupId>commons-logging</groupId>
  <artifactId>commons-logging</artifactId>
  <name>Apache Commons Logging</name>
  <version>1.2</version>
</dependency>
import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Locale;import java.util.Map;import java.util.Map.Entry;import org.apache.commons.beanutils.BeanUtils;/** * @author vipyhd* Map 对象与 JavaBean 对象互转工具类 * @param <T> */public class BeanToMapUtil<T>{private BeanToMapUtil(){// 私有的构造方法}/** * 将 Map对象转化为JavaBean * * @param map * @param T * @return * @throws Exception */public static <T> T convertMap2Bean(Map<String, Object> map, Class<T> T) throws Exception {if (map == null || map.size() == 0) {return null;}// 获取map中所有的key值,全部更新成大写,添加到keys集合中,与mybatis中驼峰命名匹配Object mvalue = null;Map<String, Object> newMap = new HashMap<>();Iterator<Entry<String, Object>> it = map.entrySet().iterator();while (it.hasNext()) {String key = it.next().getKey();mvalue = map.get(key);if (key.indexOf(CharacterConstant.UNDERLINE) != -1) {key = key.replaceAll(CharacterConstant.UNDERLINE, "");}newMap.put(key.toUpperCase(Locale.US), mvalue);}BeanInfo beanInfo = Introspector.getBeanInfo(T);T bean = 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 (newMap.keySet().contains(upperPropertyName)) {Object value = newMap.get(upperPropertyName);// 这个方法不会报参数类型不匹配的错误。BeanUtils.copyProperty(bean, propertyName, value);}}return bean;}/** * 将一个 JavaBean 对象转化为一个 Map * * @param bean * @return * @throws IntrospectionException * @throws IllegalAccessException * @throws InvocationTargetException */public static Map<String, Object> convertBean2Map(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException {Class<? extends Object> type = bean.getClass();Map<String, Object> returnMap = new HashMap<>();BeanInfo beanInfo = Introspector.getBeanInfo(type);PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();for (int i = 0; i < propertyDescriptors.length; i++) {PropertyDescriptor descriptor = propertyDescriptors[i];String propertyName = descriptor.getName();if (!"class".equals(propertyName)) {Method readMethod = descriptor.getReadMethod();Object result = readMethod.invoke(bean, new Object[0]);if (result != null) {returnMap.put(propertyName, result);} else {returnMap.put(propertyName, null);}}}return returnMap;}/** * 将 List<Map>对象转化为List<JavaBean> * * @param listMap * @param T * @return * @throws Exception */public static <T> List<T> convertListMap2ListBean(List<Map<String, Object>> listMap, Class<T> T) throws Exception {List<T> beanList = new ArrayList<>();if (listMap != null && !listMap.isEmpty()) {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;}return beanList;}/** * 将 List<JavaBean>对象转化为List<Map> * * @param beanList * @return * @throws Exception */public static <T> List<Map<String, Object>> convertListBean2ListMap(List<T> beanList, Class<T> T) throws Exception {List<Map<String, Object>> mapList = new ArrayList<>();for (int i = 0, n = beanList.size(); i < n; i++) {Object bean = beanList.get(i);Map<String, Object> map = convertBean2Map(bean);mapList.add(map);}return mapList;}}
package com.wdb.uos.utils;

public class CharacterConstant {

	
	static final String UNDERLINE="_";

	public static String getUnderline() {
		return UNDERLINE;
	}
	
	
	
}


猜你喜欢

转载自blog.csdn.net/vipyhd/article/details/80949432