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 ...
随机推荐
- Selenium2+python自动化2.7-火狐44版本环境搭建(转)
转载地址:https://www.cnblogs.com/yoyoketang/p/selenium.html 前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以 ...
- 【VS开发】【OpenGL开发】OpenGL---Windows下配置与第一个OpenGL程序
面记录一下Windows下配置OpenGL与我的第一个OpenGL程序. 第一步:选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Bu ...
- 数据挖掘经典算法PrefixSpan的一个简单Python实现
前言 用python实现了一个没有库依赖的"纯" py-based PrefixSpan算法. Github 仓库 https://github.com/Holy-Shine/Pr ...
- linux语句
查看网卡 ip addr ifconfig
- springboot(3):整合Servlet,filter,listener
1.springboot整合Servlet(2种方式) 添加maven依赖:spring-boot-starter-web 1>通过注解扫描完成Servlet组件的注册(方式1) 步骤:需要3步 ...
- WUSTOJ 1332: Prime Factors(Java)
题目链接:1332: Prime Factors Description I'll give you a number , please tell me how many different prim ...
- Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
Istio是什么? Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司.它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管 ...
- ArcGIS JS之 applyEdits之后要素符号更新
ArcGIS JS版本 ArcGIS JS 4.11 最近做一个地图服务,通过FeatureLayer.applyEdits()方法,更新唯一值的渲染字段,实现地图渲染根据用户的配置实时更新. 由于A ...
- github新建远程仓库初始化记录
…or create a new repository on the command line echo "# 输出内容" >> README.md git init ...
- CTR预估-GBDT与LR实现
1.来源 本质上 GBDT+LR 是一种具有 stacking 思想的二分类器模型,所以可以用来解决二分类问题.这个方法出自于 Facebook 2014 年的论文 Practical Lessons ...