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 ...
随机推荐
- k8s 使本地集群支持 LoadBalancer 服务
k8s 使本地集群支持 LoadBalancer 服务 为了使本地集群支持 LoadBalancer 服务,可以参考以下两种实现方案: keepalived-cloud-provider metalL ...
- 第07组 Alpha冲刺(4/4)
队名:秃头小队 组长博客 作业博客 组长徐俊杰 过去两天完成的任务:学习了很多东西 Github签入记录 接下来的计划:继续学习 还剩下哪些任务:后端部分 燃尽图 遇到的困难:自己太菜了 收获和疑问: ...
- [ClickOnce] - Win10 管理员模式下无法安装 ClickOnce 之解决
Issue Windows 10 管理员模式下,点击 ClickOnce 安装程序无反应. 解决 1. 按 WIN+R 键打开“运行”窗口,输入 “gpedit.msc" 打开组策略.2. ...
- 在Asp.Net Core中集成Kafka(中)
在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...
- C++ 用 new 生成一个动态二维数组
//Microsoft Visual Studio 2015 Enterprise //变长二维数组 #include <iostream> #include<iomanip> ...
- Linux基础-03-用户、群组
1. 用户及passwd文件 1) /etc/passwd文件的功能:存储所有用户的相关信息,该文件也被称为用户信息数据库(Database). 2) /etc/passwd文件每个字段的具体含义: ...
- nginx与PHP编译configure
configure参数nginx和php是编译安装的关键.记录下来备用: php: ./configure --prefix=/usr/local/php --with-config-file-pat ...
- Harbor 批量清理历史镜像
公司 Harbor 仓库一年多没清理,硬盘被堆满了,为此写了个批量清除的 Python 脚本. 源代码见 github-harbor_clean.py # coding: utf-8 from ope ...
- Yii2 redis 使用
首先要安装一下redis的扩展 composer require yiisoft/yii2-redis 在配置文件中添加redis配置 'components' => [ .... 'redis ...
- git版本控制系统重新认识
git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...