项目中用到的,list转换成bean。因为查询出来的数据用list 泛型接收,要返回 实体对象。所以需要对应转换。

主要用到的技术:反射。

上代码:

  1. public static <T> List<T> toBean(List<?> list, Class<T> clz) {
  2. int count = 0;
  3. Field[] fields = clz.getDeclaredFields();
  4. List<T> lst = new ArrayList();
  5. String propertyName = "";
  6. Object obj = null;
  7.  
  8. try {
  9. for(int i = 0; i < list.size(); ++i) {
  10. obj = clz.newInstance();
  11. Object[] oo = (Object[])list.get(i);
  12. Field[] var12 = fields;
  13. int var11 = fields.length;
  14.  
  15. for(int var10 = 0; var10 < var11; ++var10) {
  16. Field fd = var12[var10];
  17. Type t = fd.getGenericType();
  18. String className = t.toString().replace("class", "");
  19. Class<?> type = Class.forName(className.trim());
  20. propertyName = "set" + change(fd.getName());
  21. Method mt = obj.getClass().getMethod(propertyName, new Class[]{type});
  22. if(!"java.lang.String".equals(className.trim())) {
  23. if("java.lang.Integer".equals(className.trim())) {
  24. mt.invoke(obj, new Object[]{Integer.valueOf(Integer.parseInt(oo[count] == null?"-1":oo[count].toString()))});
  25. } else if("java.lang.Long".equals(className.trim())) {
  26. mt.invoke(obj, new Object[]{Long.valueOf(Long.parseLong(oo[count] == null?"-1":oo[count].toString()))});
  27. } else {
  28. Clob clobs;
  29. if("java.sql.Date".equals(className.trim())) {
  30. Date date = (Date)oo[count];
  31. if(!"".equals(date) && date != null) {
  32. java.sql.Date sd = new java.sql.Date(date.getTime());
  33. mt.invoke(obj, new Object[]{sd});
  34. } else {
  35. clobs = null;
  36. mt.invoke(obj, new Object[]{clobs});
  37. }
  38. } else if("oracle.sql.CLOB".equals(className.trim())) {
  39. if(oo[count] == null) {
  40. mt.invoke(obj, new Object[1]);
  41. } else {
  42. SerializableClobProxy sc = (SerializableClobProxy)Proxy.getInvocationHandler(oo[count]);
  43. clobs = sc.getWrappedClob();
  44. CLOB clob = (CLOB)clobs;
  45. mt.invoke(obj, new Object[]{clob});
  46. }
  47. } else {
  48. mt.invoke(obj, new Object[]{oo[count]});
  49. }
  50. }
  51. } else {
  52. String s = "" + oo[count];
  53. if(s == null || "null".equals(s)) {
  54. s = "";
  55. }
  56.  
  57. mt.invoke(obj, new Object[]{s});
  58. }
  59.  
  60. ++count;
  61. }
  62.  
  63. count = 0;
  64. lst.add((T)obj);
  65. }
  66. } catch (SecurityException var20) {
  67. logger.error(var20.getMessage());
  68. } catch (IllegalArgumentException var21) {
  69. logger.error(var21.getMessage());
  70. } catch (InstantiationException var22) {
  71. logger.error(var22.getMessage());
  72. } catch (IllegalAccessException var23) {
  73. logger.error(var23.getMessage());
  74. } catch (ClassNotFoundException var24) {
  75. var24.printStackTrace();
  76. logger.error(var24.getMessage());
  77. } catch (NoSuchMethodException var25) {
  78. logger.error(var25.getMessage());
  79. } catch (InvocationTargetException var26) {
  80. logger.error(var26.getMessage());
  81. }
  82.  
  83. return lst;
  84. }

list<?>转换成 对应的 class的更多相关文章

  1. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  2. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

  3. C#将Word转换成PDF方法总结(基于Office和WPS两种方案)

    有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...

  4. DataTable转换成IList<T>的简单实现

    DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...

  5. ASP.Net中实现上传过程中将文本文件转换成PDF的方法

    iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...

  6. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  7. [jquery]将当前时间转换成yyyymmdd格式

    如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate ...

  8. Gson将字符串转换成JsonObject和JsonArray

    以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...

  9. JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)

    一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...

  10. pk8和x509.pem转换成keystore

    转自:http://www.cnblogs.com/platte/p/3511814.html 一 在github上下载工具 https://github.com/getfatday/keytool- ...

随机推荐

  1. 使用BeanShell 对比取出来的值

    描述: 使用BeanShell 对比取出来的值,如不一致,报错 步骤一: 使用json Extractor后置处理器,取出"登入成功" 使用BeanS hell断言: 语法: if ...

  2. Java-Runoob-面向对象:Java 封装

    ylbtech-Java-Runoob-面向对象:Java 封装 1.返回顶部 1. Java 封装 在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细 ...

  3. 华为交换机S5700设置远程ssh telnet登录

    AAA是指:authentication(认证).authorization(授权).accounting(计费)的简称,是网络安全的一种管理机制:Authentication是本地认证/授权,aut ...

  4. 代做JSP课程设计,毕业设计

    代做JSP课程设计,毕业设计,大家都是学生,绝对靠谱,有意者加我Q 279283855

  5. Python之with语句原理

    我们看一个with处理文件操作的实例: with open('/etc/passwd') as f: for line in f: print(line) 这段代码的作用:打开一个文件,如果一切正常, ...

  6. Zabbix Agent 自动、主动注册

    简述: 今天来研究一下 Zabbix 的主动注册功能. 当你有十台机器需要监控时,你手动去添加是没有问题的.但是当你有五十台.上百台或更多服务器要监控时,你会怎么做 ? Active Agent Au ...

  7. flask 启动

    export SECRET_KEY=qq77aa88 export MAIL_SERVER=smtp.qq.com export MAIL_USERNAME=591867837@qq.com expo ...

  8. 2018-2019第一学期Java助教心得

    随着期末考试落下了帷幕,本学习也结束了回顾本学期的历程,对我影响最深的还是这学期很幸运的成为代老师的助教,这也是我第一次接触助教工作.刚开始的时候我心里也有很多的担心,怕自己胜任不了这份工作,但随着时 ...

  9. css实现图标移上图标弹跳效果

    html部分: <div class="bounce" style="width:20px;height:20px;border:1px solid red;&qu ...

  10. hdcloud SOA架构

    SOA是一个范式   多租户技术 一个租户可以是任何一个应用--或者是企业内部应用,或外部应用,它需要有自己的安全的和排他的虚拟计算环境.该环境包含了从存储到用户界面的所有或者某些选定的企业架构层.所 ...