方法:

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. php + Bootstrap-v3-Typeahead 自动完成组件的使用

    Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,类似百度.谷歌等搜索提示:输入关键词出现相应的下拉列表数据. 是Bootstrap-3-Typeah ...

  2. String类型,Function类型

    1.String类型:  1)创建String对象:    var str=new String(s);    String(s);    参数:参数 s 是要存储在 String 对象中的值或转换成 ...

  3. [问题2014A01] 复旦高等代数 I(14级)每周一题(第三教学周)

    [问题2014A01]  试求下列 \(n\) 阶行列式的值: \[ |A|=\begin{vmatrix} 1 & x_1(x_1-a) & x_1^2(x_1-a) & \ ...

  4. 如何在iPhone与iPad上开启firebug

    原文: MARTIN KOOL games - web - dad - sarien.net - q42 - livejs - handcraft How to use Firebug on your ...

  5. 深度优先搜索(DFS)

    定义: (维基百科:https://en.wikipedia.org/wiki/Depth-first_search) 深度优先搜索算法(Depth-First-Search),是搜索算法的一种.是沿 ...

  6. Android项目开发遇到的问题(64K的错误)的解决之路,从入坑到出坑

    自己一个android项目,一直以来进展还算顺利,没有遇到什么严重性的问题,今天准备给同事手机上安装一下玩玩,谁知丢人丢大,无法build apk!报错!my god,我开发没问题啊,我手机连上usb ...

  7. Linux 执行ll命令时指定按文件时间或大小排序

    按时间排序: $ ll -ht 按大小排序: $ ll -hS 使用--help查看命令的用法,如 $ ll --help

  8. 前端工程师的PS默认工作区

    右侧依次是信息.图层.历史记录,如下图:

  9. 赤红血OL

    包含海量的PSD文档!!全PSD源文档-446M.你值得拥有! <ignore_js_op> <ignore_js_op> <ignore_js_op> <i ...

  10. 《第一本docker书》第4章 使用docker镜像和仓库 读书笔记

    docker最底端是一个引导文件系统,即bootfs. 第二层是root文件系统rootfs,位于引导文件系统之上. 在传统的Linux引导过程中,root文件系统会最先以只读的方式加载,当引导结束并 ...