2020.12.17 JDBC_查詢
阿新 • • 發佈:2020-12-19
1.通用的查詢操作,結果返回一條資料
//通用的查詢操作 public <T> T getInstance(Connection conn, Class<T> tClass, String sql, Object...args) { PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i+1, args[i]); } rs = ps.executeQuery(); //獲取結果集中的元資料 ResultSetMetaData metaData = rs.getMetaData(); //通過meteData獲取結果集中的列數 int columnCount = metaData.getColumnCount(); if (rs.next()) { T t = tClass.newInstance(); //處理結果集一行資料中的每一列 for (int i = 0; i < columnCount; i++) { //獲取列值 Object columValue = rs.getObject(i+1); //獲取每個列的列名 String columLabel = metaData.getColumnLabel(i+1); Field field = tClass.getDeclaredField(columLabel); field.setAccessible(true); field.set(t, columValue); } return t; } } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.closeResource(null, ps, rs); } return null; }
2.通用的查詢操作,結果返回一個集合
//通用的查詢操作集合 public <T> List<T> getForList(Connection conn, Class<T> tClass, String sql, Object...args) { PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i+1, args[i]); } rs = ps.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); ArrayList<T> list = new ArrayList<>(); while (rs.next()) { T t = tClass.newInstance(); for (int i = 0; i < columnCount; i++) { Object columValue = rs.getObject(i + 1); String columnLabel = metaData.getColumnLabel(i + 1); Field field = tClass.getDeclaredField(columnLabel); field.setAccessible(true); field.set(t, columValue); } list.add(t); } return list; } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.closeResource(null, ps, rs); } return null; }