Java_jdbc 基础笔记之十一数据库连接 (通用的查询方法)
2015-09-09 10:56
561 查看
鉴于之前的查询方法,在这里我们可以写一个通用的方法
/** * 鉴于 student、和customer查询的方法有好多相同之处,在此可以写一个通用的方法 */ public <T> T get(Class<T> clazz, String sql, Object... args) { // 不知道具体类型可以使用泛型!!! T entity = null; // 1.获取连接 Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = JDBCTools.getConnection(); ps = conn.prepareStatement(sql); // 填充占位符 for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]); } rs = ps.executeQuery(); // 2、得到ResultSetMatedata类的对象 ResultSetMetaData rsmd = rs.getMetaData(); // 3、创建一个Map<Sring,Object>,键:SQL查询的列的别名 值:列的值 Map<String, Object> values = new HashMap<String, Object>(); // 4、 处理结果集利用 ResultSetMetaData 填充3 对应的Map对象 if (rs.next()) { for (int i = 0; i < rsmd.getColumnCount(); i++) { String columnLabel = rsmd.getColumnLabel(i + 1);// 别名 Object columnValue = rs.getObject(i + 1); values.put(columnLabel, columnValue);// 填充 } } // 5、 若Map不为空,利用反射创建clazz对应的对象!!!利用反射赋值 if (values.size() > 0) { entity = clazz.newInstance();// 反射 for (Map.Entry<String, Object> entry : values.entrySet()) { String fieldName = entry.getKey(); Object fieldValue = entry.getValue(); ReflectionUtils .setFieldValue(entity, fieldName, fieldValue); } } } catch (Exception e) { e.printStackTrace(); } finally { JDBCTools.close(rs, ps, conn); } return entity; }
相关文章推荐
- jdbc中的Statement和PreparedStatement接口对象
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android之获取手机上的图片和视频缩略图thumbnails
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序