当前位置 : 主页 > 编程语言 > c++ >

JavaBean和Map的相互转换

来源:互联网 收集:自由互联 发布时间:2021-06-30
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.
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.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) { } }
               
              
             
            
           
          
         
        
       
      
     
    
   
  
 
网友评论