在工程中加入工具类:commons-beanutils-1.7.0.jar
下载地址:http://mvnrepository.com/
或者在pom.xml中增加以下:
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.7.0</version>
</dependency>
或者:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
package com.taopl.test;
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.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
/**
* <p>描 述:对象与map互转工具类</p>
* <p>创 建 人:test</p>
* <p>创建时间:Mar 4, 2015 3:16:39 PM</p>
*/
public class JBeanUtils {
/**
* 将一个 Map 对象转化为一个 JavaBean
*
* @param type
* 要转化的类型
* @param map
* 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InstantiationException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
@SuppressWarnings("unchecked")
public static Object convertMap(Class type, Map map)
throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
Object obj = type.newInstance(); // 创建 JavaBean 对象
BeanUtils.populate(obj, map);
/**
* 将null string转为空串
* @date 2014-12-22
*
*/
// ConvertUtilsBean convertUtils = new ConvertUtilsBean();
// convertUtils.register(new Converter() {
// public Object convert(Class type, Object value) {
// if (value == null)
// return "";
// return value;
// }
// }, String.class);
// BeanUtilsBean beanUtils = new BeanUtilsBean(convertUtils,
// new PropertyUtilsBean());
// beanUtils.populate(obj, map);
return obj;
}
/**
* 将一个 JavaBean 对象转化为一个 Map
*
* @param bean
* 要转化的JavaBean 对象
* @return 转化出来的 Map 对象
* @throws IntrospectionException
* 如果分析类属性失败
* @throws IllegalAccessException
* 如果实例化 JavaBean 失败
* @throws InvocationTargetException
* 如果调用属性的 setter 方法失败
*/
@SuppressWarnings("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
*
* @describe:TODO
* @param beans
* @return
* @throws IllegalAccessException
* @throws InvocationTargetException
* @throws IntrospectionException
* @time:2014年9月3日上午10:37:32
*/
@SuppressWarnings("unchecked")
public static List<Map> convertBeans(List<Object> beans)
throws IllegalAccessException, InvocationTargetException,
IntrospectionException {
List<Map> maps = new ArrayList<Map>();
for (Iterator iterator = beans.iterator(); iterator.hasNext();) {
Object bean = (Object) iterator.next();
maps.add(convertBean(bean));
}
return maps;
}
/**
* 将对多个Map转对对象集合返回
*
* @describe:TODO
* @param type
* @param maps
* @return
* @throws IntrospectionException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws InvocationTargetException
* @time:2014年9月3日上午10:40:00
*/
@SuppressWarnings("unchecked")
public static List<Object> convertMaps(Class type, List<Map> maps)
throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
List<Object> beans = new ArrayList<Object>();
for (Map map : maps) {
beans.add(convertMap(type, map));
}
return beans;
}
/**
* 对象复制
*
* @describe:TODO
* @param toBean
* 目标对象
* @param fromBean
* 对象来源
* @return
* @throws IllegalAccessException
* @throws InvocationTargetException
* @time:2014年9月3日上午11:47:45
*/
public static Object copyProperties(Object toBean, Object fromBean)
throws IllegalAccessException, InvocationTargetException {
if (fromBean == null) {
return null;
}
BeanUtils.copyProperties(toBean, fromBean);
return toBean;
}
/**
* 对象复制(将给定的对象转化为给定的Class 类型对象并返回)
*
* @describe:TODO
* @param toClassBean
* @param fromBean
* @return
* @throws IllegalAccessException
* @throws InvocationTargetException
* @throws InstantiationException
* @throws ClassNotFoundException
* @time:2014年9月3日下午12:05:23
*/
public static Object copyProperties(Class toClassBean, Object fromBean)
throws IllegalAccessException, InvocationTargetException,
InstantiationException, ClassNotFoundException {
if (fromBean == null) {
return null;
}
Object toBean = Class.forName(toClassBean.getCanonicalName())
.newInstance();
return copyProperties(toBean, fromBean);
}
/**
* 将给定的对象集合转换为指定的类对象集合
*
* @describe:TODO
* @param toClassBean
* 类 类型
* @param beans
* 对象集合
* @return
* @throws IllegalAccessException
* @throws InvocationTargetException
* @throws InstantiationException
* @throws ClassNotFoundException
* @time:2014年9月3日下午12:33:24
*/
public static List copyProperties(Class toClassBean, List beans)
throws IllegalAccessException, InvocationTargetException,
InstantiationException, ClassNotFoundException {
List list = new ArrayList();
for (Iterator iterator = beans.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
list.add(copyProperties(toClassBean, object));
}
return list;
}
public static void main(String[] args) throws Exception {
//User user = new User();
// System.out.println(convertBean(user));
//GpGroup gp = (GpGroup) copyProperties(GpGroup.class, user);
// System.out.println(gp);
}
}