list<?>转换成 对应的 class
项目中用到的,list转换成bean。因为查询出来的数据用list 泛型接收,要返回 实体对象。所以需要对应转换。
主要用到的技术:反射。
上代码:
public static <T> List<T> toBean(List<?> list, Class<T> clz) {
int count = 0;
Field[] fields = clz.getDeclaredFields();
List<T> lst = new ArrayList();
String propertyName = "";
Object obj = null; try {
for(int i = 0; i < list.size(); ++i) {
obj = clz.newInstance();
Object[] oo = (Object[])list.get(i);
Field[] var12 = fields;
int var11 = fields.length; for(int var10 = 0; var10 < var11; ++var10) {
Field fd = var12[var10];
Type t = fd.getGenericType();
String className = t.toString().replace("class", "");
Class<?> type = Class.forName(className.trim());
propertyName = "set" + change(fd.getName());
Method mt = obj.getClass().getMethod(propertyName, new Class[]{type});
if(!"java.lang.String".equals(className.trim())) {
if("java.lang.Integer".equals(className.trim())) {
mt.invoke(obj, new Object[]{Integer.valueOf(Integer.parseInt(oo[count] == null?"-1":oo[count].toString()))});
} else if("java.lang.Long".equals(className.trim())) {
mt.invoke(obj, new Object[]{Long.valueOf(Long.parseLong(oo[count] == null?"-1":oo[count].toString()))});
} else {
Clob clobs;
if("java.sql.Date".equals(className.trim())) {
Date date = (Date)oo[count];
if(!"".equals(date) && date != null) {
java.sql.Date sd = new java.sql.Date(date.getTime());
mt.invoke(obj, new Object[]{sd});
} else {
clobs = null;
mt.invoke(obj, new Object[]{clobs});
}
} else if("oracle.sql.CLOB".equals(className.trim())) {
if(oo[count] == null) {
mt.invoke(obj, new Object[1]);
} else {
SerializableClobProxy sc = (SerializableClobProxy)Proxy.getInvocationHandler(oo[count]);
clobs = sc.getWrappedClob();
CLOB clob = (CLOB)clobs;
mt.invoke(obj, new Object[]{clob});
}
} else {
mt.invoke(obj, new Object[]{oo[count]});
}
}
} else {
String s = "" + oo[count];
if(s == null || "null".equals(s)) {
s = "";
} mt.invoke(obj, new Object[]{s});
} ++count;
} count = 0;
lst.add((T)obj);
}
} catch (SecurityException var20) {
logger.error(var20.getMessage());
} catch (IllegalArgumentException var21) {
logger.error(var21.getMessage());
} catch (InstantiationException var22) {
logger.error(var22.getMessage());
} catch (IllegalAccessException var23) {
logger.error(var23.getMessage());
} catch (ClassNotFoundException var24) {
var24.printStackTrace();
logger.error(var24.getMessage());
} catch (NoSuchMethodException var25) {
logger.error(var25.getMessage());
} catch (InvocationTargetException var26) {
logger.error(var26.getMessage());
} return lst;
}
list<?>转换成 对应的 class的更多相关文章
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...
- DataTable转换成IList<T>的简单实现
DataTable的无奈 很多时候,我们需要去操作DataTable.但DataTable的操作,实在是太不方便了.Linq?lambda表达式?统统没有... 特别是对现有结果集做进一步筛选,这样的 ...
- ASP.Net中实现上传过程中将文本文件转换成PDF的方法
iTextSharp是一个常用的PDF库,我们可以使用它来创建.修改PDF文件或对PDF文件进行一些其他额外的操作.本文讲述了如何在上传过程中将文本文件转换成PDF的方法. 基本工作 在开始之前,我们 ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- [jquery]将当前时间转换成yyyymmdd格式
如题: function nowtime(){//将当前时间转换成yyyymmdd格式 var mydate = new Date(); var str = "" + mydate ...
- Gson将字符串转换成JsonObject和JsonArray
以下均利用Gson来处理: 1.将bean转换成Json字符串: public static String beanToJSONString(Object bean) { return new Gso ...
- JAVA将数字字符串强制转换成整型变量----求参数之和实验代码(附流程图)
一.设计思想 先将参数个数输出,并利用循环结果将参数逐个输出,再将字符串强制转化成整型,利用循环结构相加求和 二.程序流程图 三.源程序代码 package demo; public class Co ...
- pk8和x509.pem转换成keystore
转自:http://www.cnblogs.com/platte/p/3511814.html 一 在github上下载工具 https://github.com/getfatday/keytool- ...
随机推荐
- Thread之六:线程创建方法
1.继承Thread类,重写该类的run()方法. 2.实现Runnable接口,并重写该接口的run()方法,该run()方法同样是线程执行体,创建Runnable实现类的实例,并以此实例作为Thr ...
- 【洛谷】P1313 计算系数(快速幂+杨辉三角)
题目 题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b , ...
- OD 实验(十九) - 对多态和变形程序的逆向
程序: 这个窗口显示这是一个需要去除的 Nag 窗口 点击“确定” 用 PEiD 看一下 这是一个用汇编语言写的程序 逆向: 用 OD 载入程序 Nag 窗口的标题和文本 右键 -> 查找 -& ...
- Deep Learning 阅读笔记:Convolutional Auto-Encoders 卷积神经网络的自编码表达
需要搭建一个比较复杂的CNN网络,希望通过预训练来提高CNN的表现. 上网找了一下,关于CAE(Convolutional Auto-Encoders)的文章还真是少,勉强只能找到一篇瑞士的文章. S ...
- MySQL5.5安装与多实例
MySQL5.5编译安装 #1.2 cmake软件 cd /home/oldboy/tools/ tar xf cmake-2.8.8.tar.gz cd cmake-2.8.8 ./configur ...
- sql server 2005 修改动态端口,连接字符串为:需要改成:IP地址+逗号+端口号才行
1.sql server 2005 安装完毕后,默认是动态段,需要用sql brower 查询端口号:修改给固定端口后,格式为:IP地址+逗号+端口号. 2.sql 2000 的格式为:格式为:IP地 ...
- jq循环方法
jq在前台使用很广泛,其中不可避免会用到循环,for循环可以,但有时不方便,下边举两个jq循环: 第一个: $.each(数组或对象,function(index,item){ //循环的逻辑代码 } ...
- C# 调用动态代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- MySQL内置功能之事务、函数和流程控制
主要内容: 一.事务 二.函数 三.流程控制 1️⃣ 事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # ...
- Apache Hive (五)DbVisualizer配置连接hive
转自:https://www.cnblogs.com/qingyunzong/p/8715250.html 一.安装DbVisualizer 下载地址http://www.dbvis.com/ 也可以 ...