数据库对象映射为java对象,不使用框架
方法:
public static <T> List<T> processResultSetToList(ResultSet rs, Class<T> clazz) throws Exception {
List<T> ls = new ArrayList<T>();
Field[] fields = clazz.getDeclaredFields();
while (rs.next()) {
T tt = clazz.newInstance();
for (Field field : fields) {
try {
/**
* 如果Oracle数据库中的类型是 number p.getWriteMethod().invoke(tt, new
* Object[] { rs.getObject(p.getName()) }) 会报如下错误
* java.lang.IllegalArgumentException: argument type
* mismatch --- 另外如果mysql数据库中的bigint 在进行setXxxx(Integer
* val)时候也会抛出该异常 也会抛出该异常
*/
Object value = null;
try {
String fieldName = getColumnName(field);
switch (TypeUtils.getMappedType(field)) {
case Long:
value = Long.valueOf(rs.getLong(fieldName));
break;
case Integer:
value = Integer.valueOf(rs.getInt(fieldName));
break;
case Double:
value = Double.valueOf(rs.getDouble(fieldName));
break;
case Byte:
InputStream ins = rs.getBinaryStream(fieldName);
if(ins != null){
value = IOUtils.toByteArray(ins);
}
break;
case Date:
/**
* 15-12-8
* 转为util.Date
*/
Timestamp t = rs.getTimestamp(fieldName);
if(t!=null){
value = new Date(t.getTime());
}
break;
default:
value = rs.getObject(fieldName);
break;
}
} catch (Exception e) {// 如果仅仅查询Class的部分字段
if (e.getMessage().matches("Column\\s+'.+?'\\s+not\\s+found.")) {
switch (TypeUtils.getMappedType(field)) {
case Long:
case Integer:
value = 0;
break;
default:
value = null;
break;
}
}
}
field.setAccessible(true);
if(value != null){
field.set(tt, value);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
ls.add(tt);
}
DBUtils.close(rs, null, null);
return ls;
}
数据库对象映射为java对象,不使用框架的更多相关文章
- json字符串转json对象,json对象转换成java对象
@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...
- json字符串转成 json对象 json对象转换成java对象
import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...
- JAVA反射机制示例,读取excel数据映射到JAVA对象中
import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import ja ...
- Java EE数据持久化框架 • 【第1章 MyBatis入门】
全部章节 >>>> 本章目录 1.1 初识MyBatis 1.1.1 持久化技术介绍 1.1.2 MyBatis简介 1.1.2 Mybatis优点 1.1.3 利用Mav ...
- 【spring boot】映射properties文件属性--到Java对象
描述 将*.properties中的内容映射到java对象中: 主要步骤 添加 @Component 注解: 使用 @PropertySource 注解指定配置文件位置: 使用 @Configurat ...
- java对象之----(PO,VO,DAO,BO,POJO)
转自http://www.cnblogs.com/bluestorm/archive/2012/09/26/2703234.html 一.PO :(persistant object ),持久对象 可 ...
- java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了.通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理.可以 ...
- java对象与XML相互转化
起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...
- jackson java对象和json对象的互相转换
概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...
随机推荐
- Create Your Tab and LayerTabMenu In Katana
感谢 http://tool.lu/pyc/ 这个牛逼的网站能反编译pyc...他妈的Katana太他妈无耻了,竟然不让自定义加Node Tab Content....只能反编译他的东西了... 研究 ...
- 基于webrtc的视频通话时webrtc的接口调用流程
场景: 1.A call B 2.B answer 3.A connected with B 共同的步骤: A 和 B 都需要初始化webrtc模块,创建peerconnectionfactory 步 ...
- 禁止输入中文 与 禁止输入数字在phonegap api环境效果
例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- linux atom 不支持中文
linux atom 不支持中文 1.首先在ubuntu下安装泉驿正黑字体 sudo apt-get install ttf-wqy-* 2.Edit > Preferences > Se ...
- C/C++与Matlab混合编程
Matlab 拥有丰富的功能,编程简单.不过,有些情况下,Matlab程序的执行速度比较慢.C/C++编译执行的程序速度比较快,编程难度上比Matlab要高一些.因此存在一种方案,就是使用Matlab ...
- Point ZM 转换为Point 类型
打开ArcToolbox,使用ConvertionTools-> To Shapefile->FeatureClass to Shapefile 工具,注意在环境设置里,里将output ...
- CSS分页
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- jQuery Easing 使用方法及其图解
jQuery Easing 使用方法及其图解,非常详尽:http://blog.sina.com.cn/s/blog_70a3539f0102v8az.html
- Spring中@Async注解实现“方法”的异步调用
原文:http://www.cnblogs.com/zhengbin/p/6104502.html 简单介绍: Spring为任务调度与异步方法执行提供了注解支持.通过在方法上设置@Async注解,可 ...
- Physx入门
[疑问] 1.Physx中的场景有大小的概念么?如果有大小,那么场景中的刚体超出场景边界之后, 如何定义之后的行为. 2.如何给一个刚体增加动量?目前的接口只看到设置速度或者增加作用力.