Java 中 Map与JavaBean实体类之间的相互转化
/**
- * 将一个 JavaBean 对象转化为一个 Map
- * @param bean 要转化的JavaBean 对象
- * @return 转化出来的 Map 对象
- * @throws IntrospectionException 如果分析类属性失败
- * @throws IllegalAccessException 如果实例化 JavaBean 失败
- * @throws InvocationTargetException 如果调用属性的 setter 方法失败
- */
- @SuppressWarnings({ "rawtypes", "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 对象转化为一个 JavaBean
- * @param type 要转化的类型
- * @param map 包含属性值的 map
- * @return 转化出来的 JavaBean 对象
- * @throws IntrospectionException 如果分析类属性失败
- * @throws IllegalAccessException 如果实例化 JavaBean 失败
- * @throws InstantiationException 如果实例化 JavaBean 失败
- * @throws InvocationTargetException 如果调用属性的 setter 方法失败
- */
- @SuppressWarnings("rawtypes")
- public static Object convertMap(Class type, Map map)
- throws IntrospectionException, IllegalAccessException,
- InstantiationException, InvocationTargetException {
- 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实体类之间的相互转化的更多相关文章
- java中的xml与实体类之间的映射
实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...
- java中map接口hashMap以及Enty之间的用法和关系
java中map接口hashMap以及Enty之间的转换 首先说的是map接口: Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value ...
- java中的几种实体类对象(PO,VO,DAO,BO,POJO)
一.PO :(persistant object ),持久对象 可以看成是与数据库中的表相映射的java对象.使用Hibernate来生成PO是不错的选择. 二.VO :(value object) ...
- Java中接口与接口和类之间的关系
接口和接口之间的关系 继承关系 可以多继承,并且可以多层继承 注意: 1.如果多个父接口中有同名的抽象方法,那么子接口只需要实现一次即可 2.如果多个父接口中有同名的默认方法,那么子接口必须重写默认方 ...
- [Unity]C#中 将XML和实体类之间进行相互转换的工具类
using System; using System.Xml; using System.Xml.Serialization; using System.IO; namespace LOTool { ...
- java 项目中几种O实体类的概念
经常会接触到vo,do,dto的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析. 得出的主要结论是:在项目应用中,vo对应于页面上需要显示的数据(表单),do对应 ...
- javabean实体类对象转为Map类型对象的方法(转发)
//将javabean实体类转为map类型,然后返回一个map类型的值 public static Map<String, Object> beanToMap(Object obj) { ...
- 探究Java中Map类
Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部 ...
- 将java中Map对象转为有相同属性的类对象(json作为中间转换)
java中Map对象转为有相同属性的类对象(json作为中间转换) 准备好json转换工具类 public class JsonUtil { private static ObjectMapper o ...
随机推荐
- ny523 亡命逃串 hdoj 1253胜利大逃亡
亡命逃窜 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 从前有个叫hck的骑士,为了救我们美丽的公主,潜入魔王的老巢,够英雄吧.不过英雄不是这么好当的.这个可怜的娃被魔 ...
- Python之Dijango的“坑” hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' cod
错误代码提示: hostname, aliases, ipaddrs = gethostbyaddr(name) UnicodeDecodeError: 'utf-8' codec can't dec ...
- SparkStreaming操作Kafka
Kafka为一个分布式的消息队列,spark流操作kafka有两种方式: 一种是利用接收器(receiver)和kafaka的高层API实现. 一种是不利用接收器,直接用kafka底层的API来实现( ...
- 启用div作为编辑器 添加contentEditalbe = “true”,如何让在Html中特殊字符不被转义
今天项目中碰到了两个难以解决的问题,一个是ctrl + enter键换行,enter键发送和支持html特殊字符的发送,二人会话和群会话都必须支持,发送短信的模块也必须支持特殊的字符,但是现在碰到的问 ...
- RSA算法工具
RSA算法工具-生成密钥对(生成密钥对) RSA算法工具-解析密钥对(导入密钥对,解析密钥对) RSA测试工具-计算分量(输入P,Q,E,计算出N,DP,DQ,Qinv)
- 【WPF】BusyIndicator做Loading遮罩层
百度了一下,粗略看了几个国内野人的做法,花了时间看下去感觉不太好用(比如有Loading居然只是作为窗体的一个局部控件的,没法全屏遮罩,那要你有何用?),于是谷歌找轮子去. 好用的轮子:http:// ...
- 【WPF/C#】测试下载文件(图片)
需求:界面上有一个按钮,点击后联网下载一张PNG图片,保存到本地指定路径. 重要参考: http://stackoverflow.com/questions/24797485/how-to-downl ...
- 深入分析java中文乱码问题
http://www.ibm.com/developerworks/cn/java/j-lo-chinesecoding/
- JavaScrip——练习(做悬浮框进一步:悬浮窗后缀悬浮窗【感觉这种方法比较麻烦】)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- BusyBox telnet配置
1. busybox配置telnet相关命令. 2. devpts文件系统,是目前最常见的pseudo终端,使用telnetd服务器,必须加载该文件系统. 在/dev目录下创建一个pts目录,用来 ...