通过JDBC来理解反射机制
2019独角兽企业重金招聘Python工程师标准>>>
//将ResultSet中的数据转换为相应的对象@SuppressWarnings("unchecked")private <T> T buildAlarm(T pojo, ResultSet rs) {ResultSetMetaData rsmd;try {rsmd = rs.getMetaData();int columnsCount = rsmd.getColumnCount();for (int i = 1; i <= columnsCount; i++) {String fieldName = rsmd.getColumnLabel(i).toLowerCase();Object value = rs.getObject(fieldName);if(value instanceof java.sql.Date){value = new java.util.Date(((java.sql.Date) value).getTime());}if(value instanceof java.sql.Timestamp){value = new java.util.Date(((java.sql.Timestamp) value).getTime());}BeanUtils.setProperty(pojo, fieldName, value);}} catch (Exception e1) {}return pojo;}private <T> T buildAlarm(T pojo, ResultSet rs) {ResultSetMetaData rsmd;try {rsmd = rs.getMetaData();int columnsCount = rsmd.getColumnCount();for (int i = 1; i <= columnsCount; i++) {String fieldName = rsmd.getColumnLabel(i).toLowerCase();Object value = rs.getObject(fieldName);if(value instanceof java.sql.Date){value = new java.util.Date(((java.sql.Date) value).getTime());}if(value instanceof java.sql.Timestamp){value = new java.util.Date(((java.sql.Timestamp) value).getTime());}BeanUtils.setProperty(pojo, fieldName, value);}} catch (Exception e1) {}return pojo;}//将ResultSet中的数据转换为相应的对象@SuppressWarnings("unchecked")private <T> T buildAlarm_rs(T pojo, ResultSet rs) {Class classType = pojo.getClass();ResultSetMetaData rsmd;try {rsmd = rs.getMetaData();int columnsCount = rsmd.getColumnCount();for (int i = 1; i <= columnsCount; i++) {String fieldName = rsmd.getColumnLabel(i).toLowerCase();String stringLetter = fieldName.substring(0, 1).toUpperCase();String setName = "set" + stringLetter + fieldName.substring(1);String getName = "get" + stringLetter + fieldName.substring(1);Method getMethod = classType.getMethod(getName, new Class[] {});Method setMethod = classType.getMethod(setName,new Class[] { getMethod.getReturnType() });Class fieldType = setMethod.getParameterTypes()[0];Object value = null;if (fieldType == Integer.class || "int".equals(fieldType.getName())){if(rs.getObject(fieldName)!=null)value = rs.getInt(fieldName);}else if (fieldType == Float.class || "float".equals(fieldType.getName())){if(rs.getObject(fieldName)!=null)value = rs.getFloat(fieldName);}else if (fieldType == Double.class || "double".equals(fieldType.getName())){if(rs.getObject(fieldName)!=null)value = rs.getDouble(fieldName);}else if (fieldType == Timestamp.class || fieldType == java.util.Date.class){value = rs.getTimestamp(fieldName);}elsevalue = rs.getString(fieldName);// 赋值操作setMethod.invoke(pojo, new Object[] { value });}} catch (Exception e1) {e1.printStackTrace();}return pojo;}
转载于:https://my.oschina.net/HuifengWang/blog/232953
通过JDBC来理解反射机制相关推荐
- Java学习总结3——枚举类和反射机制
Java枚举类和反射机制 一.Java枚举类(Enum): 在某些情况下,一个类的对象是有限且固定的,对于这种对象的实例有限且固定的类,在 Java 中被称为枚举类(Enum):枚举类是为了提高代码可 ...
- 闭关修炼(八)反射机制
文章目录 反射 什么是反射机制? 反射机制的作用 通过java反射机制创建对象例子 使用默认无参构造函数创建对象 使用有参构造函数创建对象 怎么禁止反射机制? spring中的运用场景 jdbc中的运 ...
- Java:反射机制学习
文章目录 前言 一.Java反射机制具体是什么 为什么Java要有反射机制,为什么像C++之类的语言不需要有反射机制 反射机制宏观上能让我们做些什么 二.通过反射获取运行时标识Class类 1.Cla ...
- Java反射机制的理解和在项目中的应用场景
Java反射机制的理解 Java程序中的对象在运行时可以表现为两种类型,即编译时类型和运行时类型.例如 Person p = new Student(); ,这行代码将会生成一个p变量,该变量的编译时 ...
- 理解Java反射机制
理解Java反射机制 1. 概述 2. 反射原理 3. 反射的优缺点 4. 反射的用途 5. 反射相关的类 5.1 Constructor 5.2 Field 5.3 Method 5.4 Class ...
- 【Java 19】反射 - 反射机制概述、获取Class实例、类的加载与ClassLoader的理解、创建运行时类的对象、获取运行时类的完整结构、调用运行时类的指定结构、动态代理
反射机制概述.获取Class实例.类的加载与ClassLoader的理解.创建运行时类的对象.获取运行时类的完整结构.调用运行时类的指定结构.动态代理 反射 1 Java反射机制概述 1.1 Java ...
- 深入理解Java Class反射机制
本篇主要是深入对Java中的Class对象进行分析,这对后续深入理解反射技术非常重要,这篇有点偏向内功类文章. 深入理解Class对象 RRTI的概念以及Class对象作用 认识Class对象之前,先 ...
- 深入理解Java类型信息(Class对象)与反射机制
关联文章: 深入理解Java类型信息(Class对象)与反射机制 深入理解Java枚举类型(enum) 深入理解Java注解类型(@Annotation) 深入理解Java并发之synchronize ...
- 关于php反射机制的一些理解
//=====纯属是个人的理解,不一定正确,请谅解====== 关于php的反射机制,php反射机制的最大的用处是通过一个实例化的对象来获取对象所属类的一些信息,而可以通过该对象所属类的相关信息来对对 ...
最新文章
- 思科路由器的硬件组成
- nginx优化--突破十万并发
- [小问题笔记(八)] 常用SQL(读字段名,改字段名,打印影响行数,添加默认值,查找存储过程等)...
- 附上堆和栈的区别 (转贴)
- Mysql查询(基于某酒店2000w条数据)
- 卡尔玛滤波的原理说明
- 大学计算机基础知识说课,计算机基础说课课件
- 宋宝华:公元1024年Linux内核的尘封往事
- 经典问题之约瑟夫问题_C语言实现
- 电子邮件是qq邮箱吗
- 网站盈利模式分类详解
- oracle 时间毫秒数,计算Oracle中两个时间戳之差(以毫秒为单位)
- mysql 关闭防火墙 命令_CentOS7关闭防火墙命令
- SuperMap 基本概念
- sql语句实现查询实例
- 粗略的了解Javascript
- Office2016 Excel 快捷键备忘录
- 因为现在的手机大部分都不能换电池,是不是手机使用1至2年就需要更换了?...
- 【新知实验室】——腾讯云音视频TRTC体验
- 微软Excel输入1.之后,小数点消失了