1 /** 2 * General query based on different tables. 3 * @param clazz clazz 4 * @param sql sql 5 * @param args args 6 * @param <T> t 7 * @return T 8 */ 9 public <T> T getInstance(Class<T> clazz, String sql, Object... args) { 10 try (PreparedStatement ps = connection.prepareStatement(sql)) { 11 for (int i = 0; i < args.length; i++) { 12 ps.setObject(i + 1, args[i]); 13 } 14 ResultSet resultSet = ps.executeQuery(); 15 ResultSetMetaData metaData = resultSet.getMetaData(); 16 int columnCount = metaData.getColumnCount(); 17 if (resultSet.next()) { 18 T t = clazz.getDeclaredConstructor().newInstance(); 19 for (int i = 0; i < columnCount; i++) { 20 Object columnValue = resultSet.getObject(i + 1); 21 String columnLabel = metaData.getColumnLabel(i + 1); 22 Field field = clazz.getDeclaredField(columnLabel); 23 field.setAccessible(true); 24 field.set(t, columnValue); 25 } 26 return t; 27 } 28 } catch (Exception e) { 29 e.printStackTrace(); 30 } 31 return null; 32 } 33 34 /** 35 * Set query based on different tables.. 36 * @param clazz clazz 37 * @param sql sql 38 * @param args args 39 * @param <T> t 40 * @return T 41 */ 42 public <T> List<T> getForList(Class<T> clazz, String sql, Object... args) { 43 try (PreparedStatement ps = connection.prepareStatement(sql)) { 44 for (int i = 0; i < args.length; i++) { 45 ps.setObject(i + 1, args[i]); 46 } 47 ResultSet resultSet = ps.executeQuery(); 48 ResultSetMetaData metaData = resultSet.getMetaData(); 49 int columnCount = metaData.getColumnCount(); 50 List<T> list = new ArrayList<>(); 51 while (resultSet.next()) { 52 T t = clazz.getDeclaredConstructor().newInstance(); 53 for (int i = 0; i < columnCount; i++) { 54 Object columnValue = resultSet.getObject(i + 1); 55 String columnLabel = metaData.getColumnLabel(i + 1); 56 Field field = clazz.getDeclaredField(columnLabel); 57 field.setAccessible(true); 58 field.set(t, columnValue); 59 } 60 list.add(t); 61 } 62 return list; 63 } catch (Exception e) { 64 e.printStackTrace(); 65 } 66 return null; 67 }
原文:https://www.cnblogs.com/yhc-love-cl/p/15006713.html