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;
}


}

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

/** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map...
  • u012418845
  • u012418845
  • 2017年03月17日 10:37
  • 283

利用Java的反射机制实现Bean实体与Map自动转换的工具类

利用Java的反射机制实现Bean实体与Map自动转换的工具类
  • renfuhao01
  • renfuhao01
  • 2016年01月09日 15:22
  • 1155

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

在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。 那现...
  • weinichendian
  • weinichendian
  • 2016年09月24日 13:56
  • 12582

javabean(实体类)转Map类型

javabean转map类型 实体类转map类型
  • u011511684
  • u011511684
  • 2014年07月09日 16:10
  • 2751

javaBean与Map相互转化

1. 为什么要实现javaBean与Map相互转换? 用过spring的都知道spring的MVC框架中有一个BaseCommandController对象,利用这个对象我们就可以很方便的将从客...
  • u011120983
  • u011120983
  • 2015年11月26日 11:53
  • 649

Bean和Map的互转+Demo

事情原由:由于数据库空值字段要作为key值保存在Map中,之前写过一篇通过mybatis配置,可以解决这样的问题,但是测试环境时因为其他表空值的原因就爆炸了,只有老老实实的通过Bean转化Map。其中...
  • CJL347087125
  • CJL347087125
  • 2016年11月29日 21:41
  • 234

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

/** *  * @Title: convertMap * @Description: 使用泛型Map转bean * 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法。 * 遍...
  • u012532109
  • u012532109
  • 2015年02月13日 15:14
  • 746

javabean和map相互转换工具类

import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector...
  • shehun11
  • shehun11
  • 2015年11月24日 12:31
  • 2084

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

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

二、java项目常用工具类之beancopy,bean和map转换工具类

一、问题描述及试用场景: 在项目规范中,要求类名以DO为尾的类作为数据库层实体bean,类名以MO为尾的类作为系统传输层实体bean,类名以VO为尾的类作为服务端与前端交互的实体bean。由于以上要...
  • hupoling
  • hupoling
  • 2017年11月12日 16:38
  • 272
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:map bean实体 互转
举报原因:
原因补充:

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