最近写接口规范时,规定用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; } }
相关推荐
java Map转换成bean,利用java反射以及java和bean包将map,Object>类型集合转换成需要的javaBean
策略模式代码,两种方式实现,第一种,通过map存储方式,第二种,通过配置文件加反射方式
java map转实体可以利用java的反射去封装,于是就在hibernate的工具类下试着封装了下,封装完了之后感觉没必要,这完全就可以提取出来变成一个独立的工具类,而不仅仅局限于hibernate了,这样既可以满足一个hql查询...
基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需
主要给大家介绍了关于基于Java反射的map自动装配JavaBean工具类设计的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起看看吧
与在运行时工作的映射框架相比,MapStruct具有以下优点: 通过使用普通方法调用而不是反射来快速执行编译时类型安全。 只能映射彼此映射的对象和属性,因此不会将订单实体意外映射到客户DTO等。 独立的代码-没有...
支持精确指定只生成哪几个表的Bean,也支持模糊查找生成哪几个表的Bean,现在不但成员变量上能生成备注了,而且在Getter和Setter上也能有备注了! 更重要的是所有的配置都能被保存到本地,只要配置过一次,下次使用...
MapStruct 是一个 Java注释处理器,用于为 Java bean 类生成类型安全且高性能的映射器。它使您免于手动编写映射代码,这是一项乏味且容易出错的任务。生成器带有合理的默认值和许多内置类型转换,但在配置或实现特殊...
一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...
BeanMapper通过javassist类库实现在运行时直接生成字节码来转换类,在首次生成后,后续运行可以提供近原生的读写速度。 限制条件 类必须具有符合小驼峰规范的JavaBean setter和getter。否则无法正常访问类。 类必须...
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 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...
20. List、Set、Map 之间的区别是什么? 9 21. HashMap 和 Hashtable 有什么区别? 10 22. 如何决定使用 HashMap 还是 TreeMap? 10 23. 说一下 HashMap 的实现原理? 10 24. 说一下 HashSet 的实现原理? 11 25. ...
通过反射实例化得到对应的实例化对象,放置在map中(map是键值对,可根据id获取值)(遍历list获取对应的class属性,利用class。formName(class).newIntance()) * 4.通过id获取指定的实例化对象 * */ 底层工厂...
现在,Java EE 后端与 Flex 前端的接口已经定义好了,要完成 Java EE 后端的接口实现类非常容易,利用 Spring 强大的依赖注入功能,可以通过几行简单的代码完成: 清单 2. FlexServiceImpl class public ...
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 小结 ...
现在,Java EE 后端与 Flex 前端的接口已经定义好了,要完成 Java EE 后端的接口实现类非常容易,利用 Spring 强大的依赖注入功能,可以通过几行简单的代码完成: 清单 2. FlexServiceImpl class public class ...
Java基本类型的断言 对普通PoJo对象进行断言 判断2个PoJo对象是否相等 对2个PoJo对象指定的属性进行比较 断言Map对象 断言Collection对象或Array对象 第 4 章 使用DataMap准备和验证数据 为什么要使用DataMap? ...