JDBC课程5--利用反射及JDBC元数据(ResultSetMetaData)编写通用的查询方法
/**-利用反射及JDBC元数据编写通用的查询方法
* 1.先利用SQl语句进行查询,得到结果集-->
* 2.查找到结果集的别名:id-->
* 3.利用反射创建实体类的对象,创建author对象-->
* 4.获取结果集的列的别名: id,nation,name
* 5.再获得结果集的每一列的值,
* 结合2得到一个map键值对: 键: 列的别名,值: 列的值: {id=1,nation=中国,name=莫言}
* 6.再利用反射为2的对应的属性赋值,属性为Map 的键,值为Map 的值!
* 7.针对每轮查询,遍历map结果集,整合进对象,进行输出或者其他操作;
*/
代码:
/**ResultSetMetaData 简介
* 定义: 是描述ResultSet 的元数据对象,即从中可以或许到结果集中有多少列,列名是什么...
* 用法:
* 得到ResultSetMetaData 对象: 调用ResultSet的 getMetaData()方法即可!
* ResultSetMetaData的常用方法:
* >int getColumnCount() : SQL语句中包含的列的总个数
* >String getColumnLabel(int column) : 获取指定的列的别名,其中索引从1开始;
*
*/
public class testResultSetMetaData {
@Test
public void testResultSetMetaData(){
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
String sql="select id,author_name name,nation "+
"from author where id <= ?";
connection = JDBCTools.getConnection();
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setInt(1,5 );
resultSet=preparedStatement.executeQuery(); Map<String,Object> values=new HashMap<String,Object>();
//1. 得到ResultSetMetaData 对象
while (resultSet.next()) {
//2.打印每一列的列名
ResultSetMetaData rsmd=resultSet.getMetaData();
for (int i = 0; i < rsmd.getColumnCount(); i++) {
String columnLabel = rsmd.getColumnLabel(i + 1); //获取列表标签名称
// System.out.print("\n" + columnLabel + "\t");
Object columnValue=resultSet.getObject(columnLabel); //根据名称,获取列值,存入HashMap
values.put(columnLabel,columnValue );
}
//System.out.println(values); //获取一组结果 ,重复的键值对会被后面的覆盖掉
Class clazz=author.class;
Object object=clazz.newInstance();
for(Map.Entry<String,Object> entry: values.entrySet()){
String fieldName = entry.getKey();
Object fieldValue = entry.getValue();
System.out.print("\t"+fieldName+"-->"+fieldValue); }
System.out.print("\n******************");
} } catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.release(resultSet,preparedStatement ,connection);
}
}
}
结果:
com.mysql.jdbc.JDBC4Connection@19e1023e nation-->中国 name-->莫言 id-->1
****************** nation-->中国 name-->村上春树 id-->2
****************** nation-->中国 name-->山枫叶纷飞 id-->3
****************** nation-->北京 name-->刘慈欣 id-->4
****************** nation-->元星 name-->瑞 id-->5
******************
JDBC课程5--利用反射及JDBC元数据(ResultSetMetaData)编写通用的查询方法的更多相关文章
- <五>JDBC_利用反射及JDBC元数据编写通用的查询方法
此类针对javaBean类写了一个通用的查询方法,List<javaBean> 通用查询更新中...:通过学习,深刻体会到学会反射就等于掌握了java基础的半壁江山! 一.使用JDBC驱动 ...
- Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法
先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 ...
- JDBC学习笔记(5)——利用反射及JDBC元数据编写通用的查询方法
JDBC元数据 1)DatabaseMetaData /** * 了解即可:DatabaseMetaData是描述数据库的元数据对象 * 可以由Connection得到 */ 具体的应用代码: @Te ...
- 【转】JDBC学习笔记(5)——利用反射及JDBC元数据编写通用的查询方法
转自:http://www.cnblogs.com/ysw-go/ JDBC元数据 1)DatabaseMetaData /** * 了解即可:DatabaseMetaData是描述数据库的元数据对象 ...
- JDBC--利用反射及JDBC元数据编写通用的查询方法
1.JDBC元数据(ResuleSetMetaData):描述ResultSet的元数据对象,可以从中获取到结果集中的列数和列名等: --使用ResultSet类的getMetaData()方法获得R ...
- JDBC课程1-实现Driver接口连接mysql数据库、通用的数据库连接方法(使用文件jdbc.properties)
package day_18; import jdk.internal.util.xml.impl.Input; import org.junit.Test; import java.io.Input ...
- 利用反射和JDBC元数据实现更加通用的查询方法
package com.at221.jdbc; import java.io.IOException; import java.io.InputStream; import java.sql.*; i ...
- java攻城狮之路--复习JDBC(利用BeanUtils、JDBC元数据编写通用的查询方法;元数据;Blob;事务;批量处理)
1.利用BeanUtils的前提得要加入以下两个jar包: commons-beanutils-1.8.0.jar commons-logging-1.1.1.jar package com.shel ...
- MYSQL 之 JDBC(六): 增删改查(四)利用反射及JDBC元数据编写通用的查询
1.先利用SQL进行查询,得到结果集2.利用反射创建实体类的对象:创建Student对象3.获取结果集的列的别名:idCard.studentName4.再获取结果集的每一列的值,结合3得到一个Map ...
随机推荐
- svn服务器端—管理员分配权限
1.SVN服务器搭建和使用 下载地址:http://subversion.apache.org/packages.html 滚动到浏览器底部,下载并安装:VisualSVN服务器端和tortoiseS ...
- web端自动化——Selenium Grid原理
利用Selenium Grid可以在不同的主机上建立主节点(hub)和分支节点(node),可以使主节点上的测试用例在不同的分支节点上运行. 对不同的节点来说,可以搭建不同的测试环境(操作系统.浏 ...
- 解释张量及TF的一些API
张量的定义 张量(Tensor)理论是数学的一个分支学科,在力学中有重要应用.张量这一术语起源于力学,它最初是用来表示弹性介质中各点应力状态的,后来张量理论发展成为力学和物理学的一个有力的数学工具.张 ...
- consul服务注册与服务发现的巨坑
最近使用consul作为项目的服务注册与服务发现的基础功能.在塔建集群使用中遇到一些坑,下面一个个的记录下来. consul集群多node consul集群的node也就是我们所说的consul实例. ...
- pt-osc 变更时遇到 “MySQL error 1300” 报错问题解决
目的 线上一张表的字段长度变更 `sGuid` varchar(255) DEFAULT NULL COMMENT 'sGuid' => `sGuid` varchar(512) DEFAULT ...
- 【转】 嵌入式C语言编程中Inline函数的应用
源地址:https://blog.csdn.net/vigour1000/article/details/9622037 有一段儿时间没写写经验笔记了,哎,也是自己这一段时间以来(其实最近一直是这个状 ...
- virtualenv虚拟环境搭建及pipreqs自动生成第三方模块简介
阅读目录 virtualenv简介 含义: 为何要用虚拟环境: virtualenv安装和使用 pipreqs模块的介绍和使用 回到顶部 virtualenv简介 回到顶部 含义: virtual:虚 ...
- Beta冲刺(1/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...
- pv回收
学习cloudman中的k8s 152课,创建pod时,需要在k8s-host2 中挂着到在k8s-master 中/nfs中创建的挂载目录,结果提示没有/nfs/pv1 root@k8s-maste ...
- 洛谷 题解 P1550 【[USACO08OCT]打井Watering Hole】
本题看似很难,实际上思路非常简单--如果你想通了. 首先有一个问题:图中有几个点?大部分的人会回答\(n\)个点.错了,有\(n+1\)个. 多出来的那个点在哪?关键在于你要理解每一个决策的意义.实际 ...