利用java反射机制实现List<Map<String, Object>>转化为List<JavaBean>

最近在用mybatis做项目,遇到将date格式化显示到easyui的问题,需要将List<Map<String, Object>>转化为List<JavaBean>,研究好久,终于在网上找到了一个方法:

核心方法如下:

[java] view plain copy

  1. /**
  2. * 根据List<Map<String, Object>>数据转换为JavaBean数据
  3. * @param datas
  4. * @param beanClass
  5. * @return
  6. * @throws CommonException
  7. */
  8. public List<T> ListMap2JavaBean(List<Map<String, Object>> datas, Class<T> beanClass) throws CommonException  {
  9. // 返回数据集合
  10. List<T> list = null;
  11. // 对象字段名称
  12. String fieldname = "";
  13. // 对象方法名称
  14. String methodname = "";
  15. // 对象方法需要赋的值
  16. Object methodsetvalue = "";
  17. try {
  18. list = new ArrayList<T>();
  19. // 得到对象所有字段
  20. Field fields[] = beanClass.getDeclaredFields();
  21. // 遍历数据
  22. for (Map<String, Object> mapdata : datas) {
  23. // 创建一个泛型类型实例
  24. T t = beanClass.newInstance();
  25. // 遍历所有字段,对应配置好的字段并赋值
  26. for (Field field : fields) {
  27. // 获取注解配置
  28. JavaBean javaBean = field.getAnnotation(JavaBean.class);
  29. if(null != javaBean) {  // 有注解配置,下一步操作
  30. // 全部转化为大写
  31. String dbfieldname = javaBean.dbfieldname().toUpperCase();
  32. // 获取字段名称
  33. fieldname = field.getName();
  34. // 拼接set方法
  35. methodname = "set" + StrUtil.capitalize(fieldname);
  36. // 获取data里的对应值
  37. methodsetvalue = mapdata.get(dbfieldname);
  38. // 赋值给字段
  39. Method m = beanClass.getDeclaredMethod(methodname, field.getType());
  40. m.invoke(t, methodsetvalue);
  41. }
  42. }
  43. // 存入返回列表
  44. list.add(t);
  45. }
  46. } catch (InstantiationException e) {
  47. throw new CommonException(e, "创建beanClass实例异常");
  48. } catch (IllegalAccessException e) {
  49. throw new CommonException(e, "创建beanClass实例异常");
  50. } catch (SecurityException e) {
  51. throw new CommonException(e, "获取[" + fieldname + "] getter setter 方法异常");
  52. } catch (NoSuchMethodException e) {
  53. throw new CommonException(e, "获取[" + fieldname + "] getter setter 方法异常");
  54. } catch (IllegalArgumentException e) {
  55. throw new CommonException(e, "[" + methodname + "] 方法赋值异常");
  56. } catch (InvocationTargetException e) {
  57. throw new CommonException(e, "[" + methodname + "] 方法赋值异常");
  58. }
  59. // 返回
  60. return list;
  61. }

原文地址:https://www.cnblogs.com/tanzq/p/8443501.html

时间: 2024-08-26 21:14:48

利用java反射机制实现List<Map<String, Object>>转化为List<JavaBean>的相关文章

利用Java反射机制和泛型,全自动解析json

有啦这个简直,太爽啦, 利用Java 反射机制,利用Class 就可以得到 类的 变量  Field[] fields=cls.getDeclaredFields(); 还可以通过类中 的方法名字 去执行这个方法 m1 = cls.getDeclaredMethod(getMothodName(fields[j].getName()), String.class); m1.invoke(result,json.getString(fields[j].getName()) ); 利用泛型 去获取这

利用Java反射机制完成XML到对象的解析

对于一些小批量的数据,如果采用数据库来存取的话,未免有点大题小作,使用XML文件是个不错的方法,尤其是在一些Web应用中,经常需要缓存一部分数据,如果将这些数据形成XML文件,解析后放入一个Hashtable,那就能大大加快访问的速度. 由于工作的需要,写了一个解析工具,将XML解析成相应的对象列表.以下是源代码,希望对大家有所帮助,更希望大家帮我来改进这个工具. package com.sp.util; /* * author:hingwu * email:[email protected]

利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换

作者:54dabang 在spring的学习过程之中,我们可以看出通过配置文件来动态管理bean对象的好处(松耦合 可以让零散部分组成一个整体,而这些整体并不在意之间彼此的细节,从而达到了真正的物理上的疏散耦合,而非逻辑,有了IOC之后,我们可以让SPRING充当各框架中的整合器,把技术框架进行完美的结合). Spring实现的一个重要的机制是通过反射(java.lang.reflect)读取配置文件,通过配置文件来动态生成配置文件中的类对象.Java动态加载类主要是为了不改变主程序代码,通过修

利用java反射机制实现读取excel表格中的数据

如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.List<Book>等,所以需要使用泛型机制去实现.下面会给出代码,可能会稍微复杂一点,但注释很清晰,希望大家耐心阅读. 在上代码之前简单说一下思路: 1.excel表格必须有表头,且表头中各列的值要与实体类的属性相同: 2.先读取表头信息,然后获取表头列数,接着确定需要使用的set方法的名称,并存到数

利用java 反射机制来实现一个servlet处理多种请求

如果我们想在一个servlet中处理多种请求(比如新闻的添加.删除),简单的可以在jsp提交表单的action路径中添加一个键值对,然后再servlet中接收后根据不同的值来调用不同的方法. jsp端 1 <form action="newsServlet?method=add" method="post"> 2 <input type="text" ..> 3 <input type="submit&qu

利用JAVA反射机制将JSON数据转换成JAVA对象

net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转换, 根据需要进行扩展,  这里可以处理Long和Date类型. 只支持单个JSONObject对象的处理,   对于复杂的JSON对象, 如JSONArray数组, 可考虑先遍历, 获取JSONObject后再进行处理. package common; import java.lang.refle

利用JAVA反射机制实现调用私有方法

1.fragment是AccessibilityFragment的對象.须要被調用的方法的類. setAccessible(true)并非将方法的訪问权限改成了public.而是取消java的权限控制检查.所以即使是public方法.其accessible属相默认也是false try { Class mClass = Class.forName("com.sonymobile.chameleon.workflow.step.AccessibilityFragment"); Metho

Android利用Java反射机制修改Android System Language

private void updateLanguage(Locale locale) { try { Object objIActMag, objActMagNative; Class clzIActMag = Class.forName("android.app.IActivityManager"); Class clzActMagNative = Class.forName("android.app.ActivityManagerNative"); Method

Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring

IOC(Inverse of Control) 可翻译为“控制反转”,但大多数人都习惯将它称为“依赖注入”.在Spring中,通过IOC可以将实现类.参数信息等配置在其对应的配置文件中,那么当 需要更改实现类或参数信息时,只需要修改配置文件即可,这种方法在上例的基础上更进一步的降低了类与类之间的耦合.我们还可以对某对象所需要的其它对象进 行注入,这种注入都是在配置文件中做的,Spring的IOC的实现原理利用的就是Java的反射机制, Spring还充当了工厂的角色,我们不需要自己建立工厂类.S