1、JDBC将返回结果集封装成对象demo

  1. class JdbcDemo {
  2.  
  3. /**
  4. * 获取数据库列名
  5. * @param rs
  6. * @return
  7. */
  8. private static String[] getColNames(ResultSet rs) throws SQLException {
  9. ResultSetMetaData rsmd = rs.getMetaData();
  10. //获取查询的列数
  11. int count = rsmd.getColumnCount();
  12. String[] colNames = new String[count];
  13. for(int i = 1; i <= count; i ++) {
  14. //获取列名
  15. colNames[i - 1] = rsmd.getColumnLabel(i);
  16. }
  17. return colNames;
  18. }
  19.  
  20. /**
  21. * 将JDBC查询返回的结果集,利用反射封装成对象
  22. * @param sql
  23. * @param clazz
  24. * @return
  25. */
  26. private static Object getObject(String sql, Class clazz) {
  27. Connection conn = null;
  28. PreparedStatement ps = null;
  29. ResultSet rs = null;
  30.  
  31. try {
  32. conn = JdbcUtils.getConnection();
  33. ps = conn.prepareStatement(sql);
  34. rs = ps.executeQuery();
  35. String[] colNames = getColNames(rs);
  36.  
  37. Object object = null;
  38. Method[] ms = clazz.getMethods();
  39. if(rs.next()) {
  40. object = clazz.newInstance();
  41. for(int i = 0; i < colNames.length; i ++) {
  42. String colName = colNames[i];
  43. String methodName = "set" + colName;
  44. //稳妥一点。在对象查询下是否有此方法在调用方法
  45. for(Method md : ms) {
  46. if(methodName.equals(md.getName())) {
  47. md.invoke(object, rs.getObject(colName));
  48. break;
  49. }
  50. }
  51. }
  52. }
  53. return object;
  54. } finally {
  55. //释放连接
  56. JdbcUtils.free(rs, ps, conn);
  57. }
  58. }
  59.  
  60. }

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. Java开发环境之Solr

    查看更多Java开发环境配置,请点击<Java开发环境配置大全> 玖章:Solr安装教程 1)官网下载Solr安装包 http://lucene.apache.org/solr/downl ...

  2. k8s之volume

    pause容器为基础架构容器,每一个节点都有一个pause镜像, 为每一个pod提供底层基础支撑设备,所有pod中容器会共享此容器的网络空间,存储卷也是 还可使用csi,存储插件. 使用存储卷步骤1. ...

  3. Activity知识点详解

    Activity知识点详解 一.什么是Activity 官方解释: The Activity class is a crucial component of an Android app, and t ...

  4. 完美快速解决百度分享不支持HTTPS的问题

    百度分享不支持HTTPS这件事由来已久,我之前向百度分享提交过这个问题,无果!但近期themebetter主题用户咨询的比较多,我们就总结了解决方案. 第一步:下载百度分享必备文件 点此下载stati ...

  5. Educational Codeforces Round 64 (Rated for Div. 2)题解

    Educational Codeforces Round 64 (Rated for Div. 2)题解 题目链接 A. Inscribed Figures 水题,但是坑了很多人.需要注意以下就是正方 ...

  6. C#操作域用户ADHelper

    在C#中操作域用户,在项目中写的帮助类: using System; using System.Collections.Generic; using System.DirectoryServices; ...

  7. 题解 洛谷P1236 【算24点】

    不得不说,个人认为许多大佬们把程序想复杂了,所以码量很长,但是实际上这题并不要这么复杂... 可以考虑用一个\(dfs\)维护一个状态\(f(n)[a_1,a_2--a_n]\) 接下来我们暴力枚举两 ...

  8. samba服务器的搭建和用户权限,文件夹权限设置

    一.简介:samba服务是基于netbios  安装: 通过yum安装 [root@localhost ~]# yum install samba samba-client samba-swat 查看 ...

  9. SQL查询结果拼接成字符串

    sqlserver中将查询结果拼接成字符串   #for xml path(param)--将查询结果以xml格式输出 1 select id,name from table1 for xml pat ...

  10. Browsersync 省时浏览器同步测试工具,浏览器自动刷新,多终端同步

    官网地址 http://www.browsersync.cn/ 1.安装 BrowserSync npm install -g browser-sync 2.启动 BrowserSync // --f ...