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利用反射技术将查询结果封装为对象的更多相关文章

  1. JDBC 利用反射技术将查询结果封装为对象(简单ORM实现)

    ORM(Object Relational Mapping)对象关系映射 public class ORMTest { public static void main(String[] args) t ...

  2. java_jdbc_反射技术将查询结果封装为对象

    package cn.itcast.Reflect; import java.lang.reflect.InvocationTargetException; import java.lang.refl ...

  3. 【转】【Java】利用反射技术,实现对类的私有方法、变量访问

    java关于反射机制的包主要在java.lang.reflect中,structs,hibernate,spring等框架都是基于java的反射机制. 下面是一个关于利用java的反射机制,实现了对私 ...

  4. [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程

    [.net 面向对象程序设计进阶] (20) 反射(Reflection)(上)利用反射技术实现动态编程 本节导读:本节主要介绍什么是.NET反射特性,.NET反射能为我们做些什么,最后介绍几种常用的 ...

  5. 第89节:Java中的反射技术

    第89节:Java中的反射技术 反射技术是动态的获取指定的类,和动态的调用类中的内容(没有类前就可以创建对象,将对象的动作完成,这就是动态的获取指定的类). 配置文件把具体实现的类名称定义到配置文件中 ...

  6. java 中利用反射机制获取和设置实体类的属性值

    摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...

  7. hibernate将本地SQL查询结果封装成对象

    hibernate将本地SQL查询结果封装成对象 不知道大家有没有碰过这种情况,迫于很多情况只能用native SQL来查询(如:复杂统计等),然而使用native查询后,结果会被放到object里, ...

  8. Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法

    先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 ...

  9. JDBC 利用反射 配置文件

    import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.s ...

随机推荐

  1. docker安装mysql5.6(win10家庭版)

    闲话不多说,打开之前已经安装好的客户端Docker Quickstart Terminal,安装方法请看上一篇,链接地址:https://www.cnblogs.com/jimmyshan-study ...

  2. Grafana+Prometheus实现Ceph监控和钉钉告警-转载(云栖社区)

    获取软件包 最新的软件包获取地址 https://prometheus.io/download/ Prometheus 1.下载Prometheus $ wget https://github.com ...

  3. Mysql【第三课】

  4. Kotlin属性委托系统总结与提供委托详解

    属性委托总结回顾: 在前三次已经将Kotlin委托相关的知识点进行了完整的学习了,具体博文如下: https://www.cnblogs.com/webor2006/p/11369019.html h ...

  5. springboot+Mybatis+MySql 一个update标签中执行多条update sql语句

    Mysql是不支持这种骚操作的,但是不代表并不能实现,只需要在jdbc配置文件中稍微做一下修改就行. driver=com.mysql.jdbc.Driver url=jdbc:mysql://127 ...

  6. 4、markdown基本语法

    一.前言 由于有些语法无法在博客园展示,推荐使用Typora解锁全套,下载地址:https://www.typora.io/ 推荐使用jupyter,使用方法:https://www.cnblogs. ...

  7. ES6对象的个人总结

    属性初始值的简写: 当一个对象的属性与本地变量同名时,不需要再写冒号和值,直接写属性名即可 let fullName = '杨三', age = 19; let obj = { fullName: f ...

  8. LeetCode 842. Split Array into Fibonacci Sequence

    原题链接在这里:https://leetcode.com/problems/split-array-into-fibonacci-sequence/ 题目: Given a string S of d ...

  9. nexus 3.17.0 做为golang 的包管理工具

    nexus 3.17.0 新版本对于go 包管理的支持是基于go mod 的,同时我们也需要一个athens server 然后在nexus 中配置proxy 类型的repo 参考配置 来自官方的配置 ...

  10. 开发框架Express

    一.使用原因 由于nodejs原生的http核心模块在某些方面不足以应对开发需求,所以就需要使用框架来加快开发效率,让代码更高度统一.在nodejs中有许多web开发框架,以下介绍Express的使用 ...