zoukankan      html  css  js  c++  java
  • java 中实体Bean和Map互相转化

     技术交流群: 233513714

    // 将一个map对象转化为bean
    public static void transMap2Bean(Map<String, Object> map, Object obj) {
    
            try {
                BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                for (PropertyDescriptor property : propertyDescriptors) {
                    String key = property.getName();
                    if (map.containsKey(key)) {
                        Object value = map.get(key);
                        // 得到property对应的setter方法
                        Method setter = property.getWriteMethod();
                        setter.invoke(obj, value);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    // Bean --> Map 1: 利用Introspector和PropertyDescriptor 将Bean --> Map
    public static Map<String, Object> transBean2Map(Object obj) {
            if (obj == null) {
                return null;
            }
            Map<String, Object> map = new HashMap<String, Object>();
            try {
                BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                for (PropertyDescriptor property : propertyDescriptors) {
                    String key = property.getName();
                    // 过滤class属性
                    if (!key.equals("class")) {
                        // 得到property对应的getter方法
                        Method getter = property.getReadMethod();
                        Object value = getter.invoke(obj);
                        map.put(key, value);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return map;
        }
        /**
         * map转实体类
         *
         * @param type
         * @param map
         * @return
         */
        public static Object convertMap(Class type, Map map) {
            Object obj = null;
            try {
                BeanInfo beanInfo = Introspector.getBeanInfo(type);
                obj = type.newInstance();
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                for (PropertyDescriptor descriptor : propertyDescriptors) {
                    String propertyName = descriptor.getName();
                    if (map.containsKey(propertyName)) {
                        Object value = map.get(propertyName);
                        descriptor.getWriteMethod().invoke(obj, value);
                    }
                }
            } catch (Exception e) {
                log.error("map转实体类出现异常");
            }
            return obj;
        }
  • 相关阅读:
    16. 3Sum Closest
    17. Letter Combinations of a Phone Number
    20. Valid Parentheses
    77. Combinations
    80. Remove Duplicates from Sorted Array II
    82. Remove Duplicates from Sorted List II
    88. Merge Sorted Array
    257. Binary Tree Paths
    225. Implement Stack using Queues
    113. Path Sum II
  • 原文地址:https://www.cnblogs.com/cnndevelop/p/7171028.html
Copyright © 2011-2022 走看看