博客
关于我
JDBC——(6)PreparedStatement的使用——针对不同表的查询操作
阅读量:316 次
发布时间:2019-03-04

本文共 1293 字,大约阅读时间需要 4 分钟。

按照

中的步骤

和查询操作类似,只是对象变为Class 类对象,和利用了List

//通用类查询操作	public 
List
getForList(Class
clazz,String sql, Object... args){ Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]); } rs = ps.executeQuery(); // 获取结果集的元数据 :ResultSetMetaData ResultSetMetaData rsmd = rs.getMetaData(); // 通过ResultSetMetaData获取结果集中的列数 int columnCount = rsmd.getColumnCount(); //创建集合对象 ArrayList
list = new ArrayList
(); while (rs.next()) { T t = clazz.newInstance(); // 处理结果集一行数据中的每一个列:给t对象指定的属性赋值 for (int i = 0; i < columnCount; i++) { // 获取列值 Object columValue = rs.getObject(i + 1); // 获取每个列的列名 // String columnName = rsmd.getColumnName(i + 1); String columnLabel = rsmd.getColumnLabel(i + 1); // 给t对象指定的columnName属性,赋值为columValue:通过反射 Field field = clazz.getDeclaredField(columnLabel); field.setAccessible(true); field.set(t, columValue); } list.add(t); } return list; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.closeResource(conn, ps, rs); } return null; }

转载地址:http://uqqq.baihongyu.com/

你可能感兴趣的文章
vue-依赖-点击复制
查看>>
LeetCode 116填充每个节点的下一个右侧结点指针
查看>>
2021-4-28【PTA】【L2-1 包装机 (25 分)】
查看>>
Arduino mega2560+MPU6050利用加速度值控制舵机
查看>>
紫书——蛇形填数
查看>>
A Guide to Node.js Logging
查看>>
webwxbatchgetcontact一个神奇的接口
查看>>
【考研英语-基础-简单句】简单句的核心变化_谓语情态
查看>>
Jetson AGX Xavier硬件自启动
查看>>
实现一个简易Vue(三)Compiler
查看>>
仿小米商城(上)
查看>>
HTML 和 CSS 简单实现注册页面
查看>>
(SpringMVC)springMVC.xml 和 web.xml
查看>>
jQuery中的动画
查看>>
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
查看>>
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
查看>>
LeetCode - 5. 最长回文子串——字符串、动态规划
查看>>
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
查看>>
二分查找与插入排序的结合使用
查看>>
892 三维形体的表面积(分析)
查看>>