Java Map和JavaBean(Model)互转
2016-07-08 09:18
351 查看
平时经常通过其来进行表单提交参数。
/** * 使用reflect(反射)进行转换 * @param map * @param beanClass * @return * @throws Exception */ public static Object map2Bean(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) { return null; } Object obj = beanClass.newInstance();//新实例 Field[] fields = obj.getClass().getDeclaredFields(); //获取所有的属性 for (Field field : fields) { int mod = field.getModifiers();//返回此类或接口以整数编码的 Java 语言修饰符 if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){ continue; } field.setAccessible(true);//打破封装 field.set(obj, map.get(field.getName()));//给obj对象的id属性赋值 } return obj; } /** * bean2Map 常用 * @param beanObj * @param <K> * @param <V> * @return */ public static <K, V> Map<K, V> bean2Map(Object beanObj) throws Exception { if(beanObj == null){ return null; } Map<K, V> map = new HashMap<>(); Field[] declaredFields = beanObj.getClass().getDeclaredFields(); //获取所有的属性 for (Field field : declaredFields) { field.setAccessible(true);//打破封装 map.put((K)field.getName(), (V)field.get(beanObj)); } return map; } /** * javaBean2Map 第二种方式 * @param javaBean * @param <K> * @param <V> * @return */ public static <K, V> Map<K, V> javaBean2Map(Object javaBean) { Map<K, V> ret = new HashMap<>(); try { Method[] methods = javaBean.getClass().getDeclaredMethods();//获取所有的属性 for (Method method : methods) { if (method.getName().startsWith("get")) { String field = method.getName(); field = field.substring(field.indexOf("get") + 3); field = field.toLowerCase().charAt(0) + field.substring(1); Object value = method.invoke(javaBean, (Object[]) null);//invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用 ret.put((K) field, (V) (null == value ? "" : value)); } } } catch (Exception e) { } return ret; }
相关文章推荐
- Java读取文件MD5的两种方案
- Java用freemarker导出word
- 疯狂java讲义学习数据类型问题及心得
- James+Javamail构建邮件服务
- java mail实现Email的发送,完整代码
- Java嵌入式数据库H2学习总结(一)——H2数据库入门
- spring security3教程系列--自定义权限管理
- spring security3教程系列--如何踢出用户
- [JAVA]int与Interger区别
- JAVA MAIL发送邮件实例
- java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
- spring源码分析之spring-core asm概述
- java中treemap和treeset实现(红黑树)
- Java的Struts2框架中拦截器使用的实例教程
- Ubuntu14.04安装JDK
- Java关键字-transient
- javax.servlet.*需要的两个包
- Java集合Map<K,V>,HashMap<K,V>的使用,for循环正解
- 开源 java CMS - FreeCMS2.5 自定义表单
- myeclipse8.5 启动时不弹出工作空间的选择,直接进入一个空的工作空间