JavaBean和Map的相互转换 package com.demo.springboot.util;import java.lang.reflect.Field;import java.util.Arrays;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.Set;import org.apache.log4j.
package com.demo.springboot.util; import java.lang.reflect.Field; import java.util.Arrays; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import org.apache.log4j.Logger; import org.springframework.util.StringUtils; public class BeanUtils extends org.apache.commons.beanutils.BeanUtils { private static final Logger logger = Logger.getLogger(BeanUtils.class); private static final String EXCLUDE_UID = "serialVersionUID"; /** * 类转换为map * @param bean * @param isExcludeUid 是否排除序列化 * @param isExcludeNullOrEmpty 是否排除空或者null值 * @param isAsc 是否ascii排序 * @return 【参数说明】 * * @return Map【返回类型说明】 * @exception throws 【违例类型】 【违例说明】 * @see 【类、类#方法、类#成员】 */ public static Map beanToMap(Object bean, boolean isExcludeUid, boolean isExcludeNullOrEmpty, boolean isAsc) { if (null == bean) { return null; } Map result = new HashMap (); try { Field[] fields = bean.getClass().getDeclaredFields(); for (Field field : fields) { //解除访问权限 field.setAccessible(true); String key = field.getName();//属性名 //排除序列化产生的serialVersionUID if (isExcludeUid && !StringUtils.isEmpty(key) && EXCLUDE_UID.equals(key)) { continue; } Object value = field.get(bean);//值 //排除值为空的字段 if (isExcludeNullOrEmpty && null == value) { continue; } result.put(key, value); if (isAsc) { result = ascSort(result); } } } catch (Exception e) { e.printStackTrace(); logger.error("bean转换map出错"); } return result; } /** * 对map进行ascII排序 * * @param map * @return 【参数说明】 * * @return Map 【返回类型说明】 * @exception throws 【违例类型】 【违例说明】 * @see 【类、类#方法、类#成员】 */ public static Map ascSort(Map map) { Map result = new LinkedHashMap (); Set keySet = map.keySet(); String[] array = keySet.toArray(new String[keySet.size()]); Arrays.sort(array, String.CASE_INSENSITIVE_ORDER); for (String key : array) { result.put(key, map.get(key)); } return result; } /** * 类转换为map * 默认排除UID属性 * 默认不排除为null值 * @param bean * @return 【参数说明】 * * @return Map 【返回类型说明】 * @exception throws 【违例类型】 【违例说明】 * @see 【类、类#方法、类#成员】 */ public static Map beanToMap(Object bean) { return beanToMap(bean, true, false, false); } /** * map转换bean * * @param map * @param clazz * @return 【参数说明】 * * @return T 【返回类型说明】 * @exception throws 【违例类型】 【违例说明】 * @see 【类、类#方法、类#成员】 */ public static T mapToBean(Map map, Class clazz) { T bean = null; try { bean = clazz.newInstance(); Field[] fields = clazz.getDeclaredFields();//获取属性集合 //Method[] methods = clazz.getMethods();//获取所有方法 for (Field field : fields) { field.setAccessible(true); String key = field.getName(); //排除序列化产生的serialVersionUID if (!StringUtils.isEmpty(key) && EXCLUDE_UID.equals(key)) { continue; } Object value = map.get(key); field.set(bean, value); } } catch (Exception e) { e.printStackTrace(); logger.error("map转换bean出错"); } return bean; } public static void main(String[] args) { } }