关闭

Java 中 Map与JavaBean实体类之间的相互转化

标签: javabean
12373人阅读 评论(0) 收藏 举报
分类:
在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。

那现在就需要用转化工具了。是通用的哦!

/** 
     * 将一个 JavaBean 对象转化为一个  Map 
     * @param bean 要转化的JavaBean 对象 
     * @return 转化出来的  Map 对象 
     * @throws IntrospectionException 如果分析类属性失败 
     * @throws IllegalAccessException 如果实例化 JavaBean 失败 
     * @throws InvocationTargetException 如果调用属性的 setter 方法失败 
     */  
    @SuppressWarnings({ "rawtypes", "unchecked" })  
    public static Map convertBean(Object bean)  
            throws IntrospectionException, IllegalAccessException, InvocationTargetException {  
        Class type = bean.getClass();  
        Map 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 (!propertyName.equals("class")) {  
                Method readMethod = descriptor.getReadMethod();  
                Object result = readMethod.invoke(bean, new Object[0]);  
                if (result != null) {  
                    returnMap.put(propertyName, result);  
                } else {  
                    returnMap.put(propertyName, "");  
                }  
            }  
        }  
        return returnMap;  
    }



/** 
     * 将一个 Map 对象转化为一个 JavaBean 
     * @param type 要转化的类型 
     * @param map 包含属性值的 map 
     * @return 转化出来的 JavaBean 对象 
     * @throws IntrospectionException 如果分析类属性失败 
     * @throws IllegalAccessException 如果实例化 JavaBean 失败 
     * @throws InstantiationException 如果实例化 JavaBean 失败 
     * @throws InvocationTargetException 如果调用属性的 setter 方法失败 
     */  
    @SuppressWarnings("rawtypes")  
    public static Object convertMap(Class type, Map map)  
            throws IntrospectionException, IllegalAccessException,  
            InstantiationException, InvocationTargetException {  
        BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性  
        Object obj = type.newInstance(); // 创建 JavaBean 对象  
  
        // 给 JavaBean 对象的属性赋值  
        PropertyDescriptor[] propertyDescriptors =  beanInfo.getPropertyDescriptors();  
        for (int i = 0; i< propertyDescriptors.length; i++) {  
            PropertyDescriptor descriptor = propertyDescriptors[i];  
            String propertyName = descriptor.getName();  
  
            if (map.containsKey(propertyName)) {  
                // 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。  
                Object value = map.get(propertyName);  
  
                Object[] args = new Object[1];  
                args[0] = value;  
  
                descriptor.getWriteMethod().invoke(obj, args);  
            }  
        }  
        return obj;  
    }


1
1
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

利用BeanMap进行对象与Map的相互转换

javabean与map的转换有很多种方式,比如: 1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个b...
  • q358543781
  • q358543781
  • 2015-12-04 16:55
  • 22494

Java 中 Map与JavaBean之间的相互转化

在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。 那现在就...
  • chenxuejiakaren
  • chenxuejiakaren
  • 2012-07-19 14:26
  • 28006

javabean与map互转

package com.common.util; import java.sql.Timestamp; import java.util.Date; import net.sf.json.Json...
  • CTLLIN
  • CTLLIN
  • 2017-08-29 16:54
  • 282

JavaBean与Map的相互转换

我们都知道,JavaBean中的属性的结构是这样的: 属性名=属性值 这个结构跟Map集合中的数据结构极其相似: Key=value 那么,问题来了,我们是否可以将Map转换为JavaBean...
  • caidie_huang
  • caidie_huang
  • 2016-08-30 21:15
  • 2409

一种Map与JavaBean可配置转换的实现

文/李智慧Map与Model(JavaBean)之间存在逻辑映射关系,在存在Map实例的情况下,可通过调用该工具获得对应的Model实例,在存在Model实例的情况下,可通过调用该工具获得对应的Map...
  • desertfish
  • desertfish
  • 2007-04-17 13:10
  • 3762

javabean和map相互转换工具类

import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector...
  • shehun11
  • shehun11
  • 2015-11-24 12:31
  • 2072

javaBean与Map<String,Object>互转

1. 为什么要实现javaBean与Map相互转换? 用过spring的都知道spring的MVC框架中有一个BaseCommandController对象,利用这个对象我们就可以很方便的将从客户端...
  • cuidiwhere
  • cuidiwhere
  • 2012-12-02 19:52
  • 116168

实体类与Map互转工具类

import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspe...
  • hechurui
  • hechurui
  • 2017-03-06 17:18
  • 3846

Java对象与Map的转换

首先是将map和要被赋值的Bean传进来 public static void setValue(Map map,Object thisObj) { Set set = map.ke...
  • bober
  • bober
  • 2010-08-12 17:04
  • 48486

JAVA中,Map转实体类、实体类转Map的方法

问世间情是何物 2017-05-30 15:03 话不多说,直接上干货 Map转换实体类的方法如下: 实体类转换Map的方法如下: 如果大家有什么不理解的地方,可以在评论里...
  • u011277123
  • u011277123
  • 2017-06-02 16:43
  • 1593
    个人资料
    • 访问:334458次
    • 积分:4498
    • 等级:
    • 排名:第7696名
    • 原创:133篇
    • 转载:241篇
    • 译文:6篇
    • 评论:32条
    文章分类
    最新评论