数据库对象映射为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 ...
随机推荐
- mysql 配置文件 value
在xml配置文件中配置数据库utl时,要使用&的转义字符也就是& 例如:<property name="url" value="jdbc:mysql ...
- c++实现蛇形矩阵总结
蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...
- Web API开发实例——对产品Product进行增删改查
1.WebApi是什么 ASP.NET Web API 是一种框架,用于轻松构建可以由多种客户端(包括浏览器和移动设备)访问的 HTTP 服务.ASP.NET Web API 是一种用于在 .NET ...
- Python编程练习题
1 求可用被17整除的所有三位数 for num in range(99,1000): if num % 17 == 0: print num ps:下面的写法和上面的写法性能的差距,上面好吧? fo ...
- [Oracle] SQL*Loader 详细使用教程(1)- 总览
SQL*Loader原理 SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高. ...
- Centos系统下Lamp环境的快速搭建(超详细,转)
lamp的搭建对于初学者是一件很头疼的事情,所以借此机会把自己当初快速搭建linux+apche+mysql+php的方法分享大家希望能到你. 工具/原料 虚拟机及Centos操作系统 Linux基本 ...
- iOS 解惑
(1)ARC下IBOutlet用weak还是strong http://blog.csdn.net/yongyinmg/article/details/20623605 苹果也没有完全建议用weak ...
- Android各组件/控件间通信利器之EventBus
实际项目开发过程中,经常遇到如下场景:不同的应用程序组件的控件间具有一定的相互关联性,其中用户对后者进行的某种操作会引起前者的相应改变.举一个具体的场景:以糗事百科为例,在糗事列表页和详情页页,对于每 ...
- Linux 文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可 ...
- canvas初体验之加载图片
上一篇的介绍主要是画一些基本的图案,这一篇主要是加载图案. canvas加载图片主要分为两个步骤: 1.获取图片资源. 2.将图片资源画到画布上. 1.1获取图片资源,canvasAPI为我们提供了多 ...