javabean与map互转

摘要:
/***将一个JavaBean对象转化为一个Map*@parambean要转化的JavaBean对象*@return转化出来的Map对象*@throwsException*/publicstaticMapconvertBean(Objectbean){MapreturnMap=newHashMap();if(bean==null){returnreturnMap;}Classtype=bean.g

/**
* 将一个 JavaBean 对象转化为一个 Map
* @param bean 要转化的JavaBean 对象
* @return 转化出来的 Map 对象
* @throws Exception
*/

public static Map convertBean(Object bean){
Map returnMap = new HashMap();
if(bean==null){
return returnMap;
}
Class type = bean.getClass();
BeanInfo beanInfo;
try {
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 = null;
try {
result = readMethod.invoke(bean, new Object[0]);
} catch (Exception e) {
//DevLog.error(type.getName() + "转换成Map出错,方法:" + readMethod.getName(), e);
}
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, "");
}
}
}
} catch (IntrospectionException e1) {
DevLog.error(type.getName() + "转换成Map出错:", e1);
}
return returnMap;
}

/**
* 将一个 Map 对象转化为一个 JavaBean
* @param type 要转化的类型
* @param map 包含属性值的 map
* @return 转化出来的 JavaBean 对象
* @throws Exception
*/

public static Object convertMap(Class type, Map map) throws Exception { 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互转》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇对象Bean与Map互转问题Python开发利器WingIDE破解方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ali OSS服务端签名直传并设置上传回调

服务端签名直传并设置上传回调 背景 请参考Web端直传实践里的背景介绍。 当采用服务端签名后直传方案后,问题来了,用户上传数据后,很多场景下,应用服务器都要知道用户上传了哪些文件,文件名字,甚至如果是图片的话,图片的大小等。为此OSS开发了上传回调功能。 用户的请求逻辑 用户向应用服务器取到上传policy和回调设置。 应用服务器返回上传policy和...

引入AOP 报错 error at ::0 formal unbound in pointcut

使用了AOP 后启动报错 九月 27, 2016 2:29:46 下午 org.springframework.context.support.AbstractApplicationContext refresh 警告: Exception encountered during context initialization - cancelling re...

ES6 对象的扩展

一、属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法 let a=1; let b=2; let es5={a:a,b:b}; // 等同于 let es6={a,b}; 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值 同样的,如果对象是方法,也可以简写: let es5={...

springboot集成下,mybatis的mapper代理对象究竟是如何生成的

前言 开心一刻    中韩两学生辩论。中:端午节是属于谁的?韩:韩国人!中:汉字是谁发明的?韩:韩国人!中:中医是属于谁的?韩:韩国人!中:那中国人到底发明过什么?韩:韩国人! 前情回顾 Mybatis源码解析 - mapper代理对象的生成,你有想过吗,我们讲到了mybatis操作数据库的流程:先创建SqlSessionFactory,然后创建SqlS...

学习Spring Boot:(二十四)多数据源配置与使用

前言 随着业务量增大,可能有些业务不是放在同一个数据库中,所以系统有需求使用多个数据库完成业务需求,我们需要配置多个数据源,从而进行操作不同数据库中数据。 正文 JdbcTemplate 多数据源 配置 需要在 Spring Boot 中配置多个数据库连接,当然怎么设置连接参数的 key 可以自己决定, 需要注意的是 Spring Boot 2.0 的默...

javascript console

javascript console console.log(object[, object, ...])在控制台输出一条消息。如果有多个参数,输出时会用空格隔开这些参数。 第一个参数可以是一个包含格式化占位符输出的字符串,例如: console.log("The %s jumped over %d tall buildings", animal, co...