bean 与 map 互转.

package com.sprucetec.tms.distribute.utils;

import java.beans.BeanInfo;import java.beans.IntrospectionException;import java.beans.Introspector;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.HashMap;import java.util.Map;

/** * bean 与 map 互转. * * @author Yinqiang Du * @date 2016/10/8 */public class BeanToMapUtil {

    /**     * 将一个 Map 对象转化为一个 JavaBean     * @param type 要转化的类型     * @param map 包含属性值的 map     * @return 转化出来的 JavaBean 对象     * @throws IntrospectionException     *             如果分析类属性失败     * @throws IllegalAccessException     *             如果实例化 JavaBean 失败     * @throws InstantiationException     *             如果实例化 JavaBean 失败     * @throws InvocationTargetException     *             如果调用属性的 setter 方法失败     */    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;    }

    /**     * 将一个 JavaBean 对象转化为一个  Map     * @param bean 要转化的JavaBean 对象     * @return 转化出来的  Map 对象     * @throws IntrospectionException 如果分析类属性失败     * @throws IllegalAccessException 如果实例化 JavaBean 失败     * @throws InvocationTargetException 如果调用属性的 setter 方法失败     */    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;    }}
时间: 2024-10-29 19:11:07

bean 与 map 互转.的相关文章

JAVA bean与XML互转---XStream

最近在项目中遇到了Java bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

JAVA bean与XML互转的利器---XStream

最近在项目中遇到了JAVA bean 和XML互转的需求, 本来准备循规蹈矩使用dom4j忽然想起来之前曾接触过的XStream, 一番研究豁然开朗,利器啊利器, 下来就XStream的一些用法与大家分享. XStream是大名鼎鼎的thought works下的一个开源项目, 主要功能是提供JAVA bean 和XML文本之间的转换,另外还提供JAVA bean和JSON之间的转换,这个不在本次讨论的范围内. XStream进行转换是非常简单的,对JAVA bean没有任何要求: 不要求对pr

bean 和 Map 的相互转换(Mybatis 拦截器分页--将Object的参数对象封装到Pager 的params 中)

1 apache 的beanUtils 工具类,只能将Bean 转换成 Map<String,String>类型,不能转换成 Map<String,Object> 2 借助工具类DozerBeanMapper 需要引入的jar 有dozer.jar  此外还包含:slf4j.jar,commons-lang.jar,commons-beanutil.jar, commons-loggin.jar 3 写自定义工具类 import org.dozer.DozerBeanMapper;

Java Bean与Map之间相互转化的实现

目录树概述Apache BeanUtils将Bean转MapApache BeanUtils将Map转Bean理解BeanUtils将Bean转Map的实现之手写Bean转Map 概述 Apache的BeanUtils Bean工具类很强大,基本涵盖了Bean操作的所有方法.这里的话我们就讲讲两个方面,一是Bean covert to Map,二是Map covert to Bean:Bean转Map其实利用的是Java的动态性-Reflection技术,不管是什么Bean通过动态解析都是可以转

Java bean 转 Map

Java bean 转 Map 时需要使用Fastjson //方法 一 Map<String, Object> a = (Map<String, Object>)JSON.toJSON(javabean) //方法 二 Map<String, Object> a = JSON.parseObject(JSON.toJSONString(javabean)) 另外也可以使用 使用 BeanUtils Map beanMap = BeanUtils.describe(ja

TxQueryRunner类对结果集封装成bean、map及object的操作

一.需要的jar包: itcast-tools-1.4.jar     http://pan.baidu.com/s/1Dbo2i commons-beanutils-1.8.3.jar    http://pan.baidu.com/s/1Dbo2i commons-logging-1.1.1.jar  http://pan.baidu.com/s/1c0yefK0 mysql-connector-java-5.1.28-bin.jar    http://pan.baidu.com/s/1e

Java bean转换map

/** * * @Title: convertMap * @Description: 使用泛型Map转bean * 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法. * 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名 * 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致, * 就将map的value插入bean中(前提是类型必须是一致,否则报错) * @param @param <T> * @param @param

自己写的两个方法,关于bean和map的转化,比网上的效率快很多

/** * * @Title: convertMap * @Description: 使用泛型Map转bean * 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法. * 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名 * 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致, * 就将map的value插入bean中(前提是类型必须是一致,否则报错) * @param @param <T> * @param @param

javabean与map互转

/**     * 将一个 JavaBean 对象转化为一个  Map     * @param bean 要转化的JavaBean 对象     * @return 转化出来的  Map 对象  * @throws Exception      */ public static Map convertBean(Object bean){      Map returnMap = new HashMap();      if(bean==null){      return returnMap;