03-封装BeanUtil工具类(javabean转map和map转javabean对象)

package com.oa.test;

import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.HashMap;
import java.util.Map;

public class BeanUtil {
    
    /**
     * 将JavaBean对象封装到Map集合当中
     * @param bean
     * @return
     * @throws Exception
     */
    public static Map<String, Object> bean2map(Object bean) throws Exception
    {
        //创建Map集合对象
        Map<String,Object> map=new HashMap<String, Object>();
        //获取对象字节码信息,不要Object的属性
        BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(),Object.class);
        //获取bean对象中的所有属性
        PropertyDescriptor[] list = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : list) {
            String key = pd.getName();//获取属性名
            Object value = pd.getReadMethod().invoke(bean);//调用getter()方法,获取内容
            map.put(key, value);//增加到map集合当中
        }
        return map;
    }
    
    
    /**
     * 将Map集合中的数据封装到JavaBean对象中
     * @param map        集合
     * @param classType 封装javabean对象
     * @throws Exception 
     */
    public static <T> T map2bean(Map<String, Object> map,Class<T> classType) throws Exception
    {
        //采用反射动态创建对象
        T obj = classType.newInstance();
        //获取对象字节码信息,不要Object的属性
        BeanInfo beanInfo = Introspector.getBeanInfo(classType,Object.class);
        //获取bean对象中的所有属性
        PropertyDescriptor[] list = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : list) {
            String key = pd.getName();    //获取属性名
            Object value=map.get(key);  //获取属性值
            pd.getWriteMethod().invoke(obj, value);//调用属性setter()方法,设置到javabean对象当中
        }
        return obj;
    }
}

 测试代码如下

package com.oa.test;

import java.util.Map;

import com.oa.domain.User;

public class Demo3 {

    /**
     * 刘诗华
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        
        // User(id=28, userName=刘诗华, password=123456)
        User user=new User(28,"刘诗华","123456");
        
        //将JavaBean集合转换成Map集合
        Map<String, Object> m = BeanUtil.bean2map(user);
        System.out.println(m);        //{id=28, userName=刘诗华, password=123456}
        //将Map集合转换JavaBean对象
        User o = BeanUtil.map2bean(m, User.class);
        System.out.println(o);      //User(id=28, userName=刘诗华, password=123456)
    }

}

猜你喜欢

转载自www.cnblogs.com/hua900822/p/9986273.html