`

通过java反射实现map与bean之间互转

    博客分类:
  • java
阅读更多

最近写接口规范时,规定用Map类型传递参数,因此写了一个Map和Bean互转的工具类。

主要技术利用java的反射。

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

/**
 * @author 杜群星
 *
 */
public class MyConverUtil {
	private static Logger log = Logger.getLogger("MyConverUtil");
	
	public static Map<String, Object> PO2Map(Object o) throws Exception{
		Map<String, Object> map = new HashMap<String, Object>();
		Field[] fields = null;
		String clzName = o.getClass().getSimpleName();
		log.info("类:"+o.getClass().getName());
		fields = o.getClass().getDeclaredFields();
		log.info("***"+clzName+"转map开始****");
		for (Field field : fields) {
			field.setAccessible(true);
			String proName = field.getName();
			Object proValue = field.get(o);
			map.put(proName.toUpperCase(), proValue);
			log.info("key:"+proName+"value:"+proValue);
		}
		log.info("***"+clzName+"转map结束****");
		return map;
	}
	

	public static Object map2PO(Map<String,Object> map,Object o) throws Exception{
		if (!map.isEmpty()) {
			for (String k : map.keySet()) {
				Object v = "";
				if (!k.isEmpty()) {
					v = map.get(k);
				}
				Field[] fields = null;
				fields = o.getClass().getDeclaredFields();
				String clzName = o.getClass().getSimpleName();
				log.info("类:"+o.getClass().getName());
				log.info("***map转"+clzName+"开始****");
				for (Field field : fields) {
					int mod = field.getModifiers();
					if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
						continue;
					}
					if (field.getName().toUpperCase().equals(k)) {
						field.setAccessible(true);
						field.set(o, v);
						log.info("key:"+k+"value:"+v);
					}

				}
				log.info("***map转"+clzName+"结束****");
			}
		}
		return o;
	}
}

 

3
1
分享到:
评论

相关推荐

    java Map转换成bean,利用java反射以及java和bean包

    java Map转换成bean,利用java反射以及java和bean包将map,Object&gt;类型集合转换成需要的javaBean

    策略模式的实现,通过反射

    策略模式代码,两种方式实现,第一种,通过map存储方式,第二种,通过配置文件加反射方式

    java map转实体

    java map转实体可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询...

    map与Javabean相互转换实例

    基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需

    基于Java反射的map自动装配JavaBean工具类设计示例代码

    主要给大家介绍了关于基于Java反射的map自动装配JavaBean工具类设计的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起看看吧

    mapstruct:用于生成类型安全的bean映射器的注释处理器

    与在运行时工作的映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用而不是反射来快速执行编译时类型安全。 只能映射彼此映射的对象和属性,因此不会将订单实体意外映射到客户DTO等。 独立的代码-没有...

    根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第12版)

    支持精确指定只生成哪几个表的Bean,也支持模糊查找生成哪几个表的Bean,现在不但成员变量上能生成备注了,而且在Getter和Setter上也能有备注了! 更重要的是所有的配置都能被保存到本地,只要配置过一次,下次使用...

    免费开源!!生成类型安全 bean 映射器的注释处理器

    MapStruct 是一个 Java注释处理器,用于为 Java bean 类生成类型安全且高性能的映射器。它使您免于手动编写映射代码,这是一项乏味且容易出错的任务。生成器带有合理的默认值和许多内置类型转换,但在配置或实现特殊...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    BeanMapper:比BeanUtils.copyProperties更快

    BeanMapper通过javassist类库实现在运行时直接生成字节码来转换类,在首次生成后,后续运行可以提供近原生的读写速度。 限制条件 类必须具有符合小驼峰规范的JavaBean setter和getter。否则无法正常访问类。 类必须...

    java面试题

    21. EJB与JAVA BEAN的区别? 13 22. Static Nested Class 和 Inner Class的不同。 13 23. JSP中动态INCLUDE与静态INCLUDE的区别? 14 24. List, Set, Map区别 14 25. 集合类都有哪些?主要方法? 14 26. 简述逻辑...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    史上最全java面试,103项重点知识,带目录

    20. List、Set、Map 之间的区别是什么? 9 21. HashMap 和 Hashtable 有什么区别? 10 22. 如何决定使用 HashMap 还是 TreeMap? 10 23. 说一下 HashMap 的实现原理? 10 24. 说一下 HashSet 的实现原理? 11 25. ...

    Spring-IOC手动模拟实现-利用dom4解析xml文件

    通过反射实例化得到对应的实例化对象,放置在map中(map是键值对,可根据id获取值)(遍历list获取对应的class属性,利用class。formName(class).newIntance()) * 4.通过id获取指定的实例化对象 * */ 底层工厂...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    现在,Java EE 后端与 Flex 前端的接口已经定义好了,要完成 Java EE 后端的接口实现类非常容易,利用 Spring 强大的依赖注入功能,可以通过几行简单的代码完成: 清单 2. FlexServiceImpl class public ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     25.1.3 编写Enterprise Java Bean类  25.2 在业务代理类中访问EJB组件  25.3 发布J2EE应用  25.3.1 在JBoss上部署EJB组件  25.3.2 在JBoss上部署Web应用  25.3.3 在JBoss上部署J2EE应用  25.4 小结 ...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    现在,Java EE 后端与 Flex 前端的接口已经定义好了,要完成 Java EE 后端的接口实现类非常容易,利用 Spring 强大的依赖注入功能,可以通过几行简单的代码完成: 清单 2. FlexServiceImpl class public class ...

    jTester使用指南(带书签).pdf

    Java基本类型的断言 对普通PoJo对象进行断言 判断2个PoJo对象是否相等 对2个PoJo对象指定的属性进行比较 断言Map对象 断言Collection对象或Array对象 第 4 章 使用DataMap准备和验证数据 为什么要使用DataMap? ...

Global site tag (gtag.js) - Google Analytics