map bean实体 互转

原创 2018年01月13日 10:35:04


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;


import javax.servlet.http.HttpServletRequest;


import net.sf.json.JSONObject;


public class BeanUtils {
/**
* bean 转化为 HashMap

* @param bean
* @return
*/
public static HashMap<String, Object> beanToMap(Object bean) {
HashMap<String, Object> map = new HashMap<String, Object>();
if (null == bean) {
return map;
}
Class<?> clazz = bean.getClass();
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo(clazz);
} catch (IntrospectionException e) {
e.printStackTrace();
}
PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor descriptor : descriptors) {
String propertyName = descriptor.getName();
if (!"class".equals(propertyName)) {
Method method = descriptor.getReadMethod();
Object result;
try {
result = method.invoke(bean);
if (null != result) {
map.put(propertyName, result);
} else {
map.put(propertyName, "");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}


return map;
}


/**
* map 转化为 bean实体

* @Title: mapToBean
* @Description: Controller用
* @param type
* @param request
* @return
* @throws Exception
* @return: Object
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Object mapToBean(Class type, HttpServletRequest request) throws Exception {
Map<String, Object> map = JSONObject.fromObject(request.getAttribute("condition"));
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;
}


/**
* map 转化为 bean实体

* @Title: mapToBean
* @Description: 泛用
* @param type
* @param map
* @return
* @throws Exception
* @return: Object
*/
@SuppressWarnings("rawtypes")
public static Object mapToBean(Class type, Map<String, Object> 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;
}


}

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

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

利用BeanMap进行对象与Map的相互转换 (在hibernate中 map集合转对象 用得到<重要>)

利用BeanMap进行对象与Map的相互转换 javabean与map的转换有很多种方式,比如: 1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是...
  • o_nianchenzi_o
  • o_nianchenzi_o
  • 2017年09月18日 18:49
  • 598

JavaBean与Map的相互转换

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

map和bean互转工具

这个在项目里有时候很有用,map2bean和bean2map, 也有时候会用到json,也可以用gson的工具. package com.newnewbank.utils.bean; import...
  • wuxingchris
  • wuxingchris
  • 2015年02月11日 10:50
  • 1738

实体类转Map

实体类转Map实际需求:需要将数据库的某些资料取出设进对应的word模板然后生成新word后打包zip下载 word模板处理 poi zip包 java8 转map 反射 实际使用中数据量...
  • huoyu7639
  • huoyu7639
  • 2018年01月15日 18:06
  • 25

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

javabean与map的转换有很多种方式,比如: 1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换1000...
  • JIESA
  • JIESA
  • 2017年11月01日 14:06
  • 206

给大家讲一个关于map和bean的故事(在SpringJdbc玩map被玩死)

下面要给大家讲一个关于map和bean的故事。。。 ------------------------------------------------ 前戏: 还记得很久以前,我在上学的时候,老师教...
  • piantoutongyang
  • piantoutongyang
  • 2016年04月02日 18:18
  • 2487

Bean和Map相互转化-Java工具类(一)

import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector...
  • weifeib
  • weifeib
  • 2016年07月13日 11:05
  • 4675

Map与JavaBean互转原理(内省机制)

1.javabean 转 map 定义一个Person的javabean public class Person { private String name; ...
  • u012987546
  • u012987546
  • 2016年08月25日 10:50
  • 692

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

在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。 那现在就...
  • chenxuejiakaren
  • chenxuejiakaren
  • 2012年07月19日 14:26
  • 28240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:map bean实体 互转
举报原因:
原因补充:

(最多只允许输入30个字)