zoukankan      html  css  js  c++  java
  • JavaBean与Map的相互转换

    
    package com.bizvane.utils.tools;
    
    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<String,Object> 【返回类型说明】
        * @exception throws 【违例类型】 【违例说明】
        * @see 【类、类#方法、类#成员】
         */
        public static Map<String, Object> beanToMap(Object bean,
                boolean isExcludeUid, boolean isExcludeNullOrEmpty, boolean isAsc)
        {
            if (null == bean)
            {
                return null;
            }
            
            Map<String, Object> result = new HashMap<String, Object>();
            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<String,Object> 【返回类型说明】
        * @exception throws 【违例类型】 【违例说明】
        * @see 【类、类#方法、类#成员】
         */
        public static Map<String, Object> ascSort(Map<String, Object> map)
        {
            
            Map<String, Object> result = new LinkedHashMap<String, Object>();
            Set<String> 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<String,Object> 【返回类型说明】
        * @exception throws 【违例类型】 【违例说明】
        * @see 【类、类#方法、类#成员】
         */
        public static Map<String, Object> beanToMap(Object bean)
        {
            return beanToMap(bean, true, false, false);
        }
        
        /**
         * map转换bean
         * 
        * @param map
        * @param clazz
        * @return 【参数说明】
        * 
        * @return T 【返回类型说明】
        * @exception throws 【违例类型】 【违例说明】
        * @see 【类、类#方法、类#成员】
         */
        public static <T> T mapToBean(Map<String, Object> map, Class<T> 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)
        {
            
        }
        
    }
    
    
  • 相关阅读:
    解决RuntimeError: cuda runtime error (30) : unknown error at /pytorch/aten/src/THC/THCGeneral.cpp:70&NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the late
    查看Ubuntu/Anaconda/cuda/cudnn/Tensorflow/Pytorch版本
    创建新用户
    142. Linked List Cycle II
    网页版Instagram如何发照片
    141. Linked List Cycle
    将博客搬至CSDN
    92. Reverse Linked List II
    Dlib使用过程全记录(一)
    定制new和delete
  • 原文地址:https://www.cnblogs.com/lovellll/p/10222457.html
Copyright © 2011-2022 走看看