方法:

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对象,不使用框架的更多相关文章

  1. json字符串转json对象,json对象转换成java对象

    @RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...

  2. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

  3. JAVA反射机制示例,读取excel数据映射到JAVA对象中

    import java.beans.PropertyDescriptor; import java.io.File; import java.io.FileInputStream; import ja ...

  4. Java EE数据持久化框架 • 【第1章 MyBatis入门】

    全部章节   >>>> 本章目录 1.1 初识MyBatis 1.1.1 持久化技术介绍 1.1.2 MyBatis简介 1.1.2 Mybatis优点 1.1.3 利用Mav ...

  5. 【spring boot】映射properties文件属性--到Java对象

    描述 将*.properties中的内容映射到java对象中: 主要步骤 添加 @Component 注解: 使用 @PropertySource 注解指定配置文件位置: 使用 @Configurat ...

  6. java对象之----(PO,VO,DAO,BO,POJO)

    转自http://www.cnblogs.com/bluestorm/archive/2012/09/26/2703234.html 一.PO :(persistant object ),持久对象 可 ...

  7. java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

    PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了.通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理.可以 ...

  8. java对象与XML相互转化

    起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...

  9. jackson java对象和json对象的互相转换

    概述 Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”. Jackson框架包含了3个核心库:streaming,databind,annotation ...

随机推荐

  1. mfc通过消息传递参数进行程序间通信

    这样的程序主要实现windows平台下两个应用程序间的通信. 最简单的单元分为两个部分,一个是引用的程序,一个是被引用的程序. 一.如果引用他人,需要传递参数找到运行的程序,并且传递消息过去 void ...

  2. Linux 2.6内核Makefile浅析

    1 概述 Makefile由五个部分组成: Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件). .config:内核 ...

  3. C语言:内存字节对齐详解[转载]

    一.什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问, ...

  4. InfoSet

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  5. openurl 跳转

    1.拨打电话: [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://68979"]]; ...

  6. jquery引用方法时传递参数

    经常到网上去下载大牛们写的js插件.每次只需将js引用并设置下变量就行了,但一直没搞明白原理(主要是大牛们的代码太简练了-,-). 这次弄清了如何传递.设置多个(很多个)参数. 如 方法为functi ...

  7. git ignore 添加忽略文件不生效解决办法

    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件).这个文件每一行保存了一个匹配的规则例如: /targ ...

  8. [SoapUI] JDBC 请求连接SQL Sever,MySQL

    MySQLDriver: com.mysql.jdbc.DriverConnection string: jdbc:mysql://localhost:3306/xxx?user=xxx&pa ...

  9. 数据库 基础篇3(mysql语法)

    4 数据库管理(接上篇) 4.1 查询所有数据库 mysql> show databases; +--------------------+ | Database           | +-- ...

  10. Laravel Container分析

    在分析Laravel流程具体细节之前我们先来了解一下它的Container容器,容器的作用简单的说就是用来存储对象(类名称或者实例),包括提供一些生成对象实例的方法. 我们查看Illuminate\C ...