Java JDBC利用反射技术将查询结果封装为对象
1、JDBC将返回结果集封装成对象demo
class JdbcDemo { /**
* 获取数据库列名
* @param rs
* @return
*/
private static String[] getColNames(ResultSet rs) throws SQLException {
ResultSetMetaData rsmd = rs.getMetaData();
//获取查询的列数
int count = rsmd.getColumnCount();
String[] colNames = new String[count];
for(int i = 1; i <= count; i ++) {
//获取列名
colNames[i - 1] = rsmd.getColumnLabel(i);
}
return colNames;
} /**
* 将JDBC查询返回的结果集,利用反射封装成对象
* @param sql
* @param clazz
* @return
*/
private static Object getObject(String sql, Class clazz) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
conn = JdbcUtils.getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
String[] colNames = getColNames(rs); Object object = null;
Method[] ms = clazz.getMethods();
if(rs.next()) {
object = clazz.newInstance();
for(int i = 0; i < colNames.length; i ++) {
String colName = colNames[i];
String methodName = "set" + colName;
//稳妥一点。在对象查询下是否有此方法在调用方法
for(Method md : ms) {
if(methodName.equals(md.getName())) {
md.invoke(object, rs.getObject(colName));
break;
}
}
}
}
return object;
} finally {
//释放连接
JdbcUtils.free(rs, ps, conn);
}
} }
Java JDBC利用反射技术将查询结果封装为对象的更多相关文章
- JDBC 利用反射技术将查询结果封装为对象(简单ORM实现)
ORM(Object Relational Mapping)对象关系映射 public class ORMTest { public static void main(String[] args) t ...
- java_jdbc_反射技术将查询结果封装为对象
package cn.itcast.Reflect; import java.lang.reflect.InvocationTargetException; import java.lang.refl ...
- 【转】【Java】利用反射技术,实现对类的私有方法、变量访问
java关于反射机制的包主要在java.lang.reflect中,structs,hibernate,spring等框架都是基于java的反射机制. 下面是一个关于利用java的反射机制,实现了对私 ...
- [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程
[.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...
- 第89节:Java中的反射技术
第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- hibernate将本地SQL查询结果封装成对象
hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...
- Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法
先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 ...
- JDBC 利用反射 配置文件
import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.s ...
随机推荐
- VMware15.5版本通过挂载系统光盘搭建yum仓库
VMware15.5版本通过挂载系统光盘搭建yum仓库一.1.打开CentOS 7虚拟机. 2.登录虚拟机,选择未列出 用户名:root 密码:输入自己设置的密码 点击登录. 3.右键单击打开终端. ...
- Unicode字符集的由来
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- kafka安装测试报错 could not be established. Broker may not be available.
修改 config 下配置文件 vim server.properties 配置本机ip listeners=PLAINTEXT://192.168.174.128:9092 执行命令时 bin/ka ...
- 【转载】Fiddler 抓包工具使用指北: 弱网络环境模拟限速测试流程
一:为什么要做弱网络测试? 实际的客户现场可能网络不稳定或者网速低,恶劣的网络环境会导致出现一些bug,影响用户体验甚至某些服务不可用.而公司内部的研发环境网络通常比较顺畅,难以复现这种bug.要解决 ...
- 微信小程序~TabBar底部导航切换栏
底部导航栏这个功能是非常常见的一个功能,基本上一个完成的app,都会存在一个导航栏,那么微信小程序的导航栏该怎么实现呢?经过无数的踩坑,终于实现了,好了,先看看效果图. 对于底部导航栏,小程序上给出的 ...
- lca:异象石(set+dfs序)
题目:https://loj.ac/problem/10132 #include<bits/stdc++.h> using namespace std; ,N,k=,head[]; str ...
- CentOS6.5配置
关闭防火墙 查看防火墙状态 /etc/init.d/iptables status 停止 /etc/init.d/iptables stop 开机不启动 chkconfig iptables off ...
- 深入理解JVM内存分配和常量池
一.虚拟机的构成 虚拟结主要由运行时数据区.执行引擎.类加载器三者构成: 而我们所说的JVM内存模型指的就是运行时数据区,下面具体分析一下运行时数据区: 二.运行时数据区组成和各个区域的作用 我们看到 ...
- djiango-异步发送邮件--celery
安装 pip install celery==4.2.0 # celery4.x支持django1.11以上版本 试了好几个版本 就4.2.0能发送成功 1.项目目录里新建一个celery的包cele ...
- toB创业中的5个行动原则- SaaS创业路线图
https://www.iyiou.com/p/84471.html 1.硬骨头原则 很多创业者急于求成,这做不好toB创业. 举例来说,产品价值阶段如果发现效果不明显,硬要推进到营销阶段在销售上想办 ...