JDBC课程5--利用反射及JDBC元数据(ResultSetMetaData)编写通用的查询方法
Posted 好好学习,天天向上
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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元数据编写通用的查询方法