JDBC查詢是根據遊標返回具體某一列的值sql
while(rs.next()){對象
rs.getObject(0);get
rs.getObject(1);io
}List
下面藉助反射,來實現類與表之間的映射map
/** * version 1.0 * 根據輸入的SQL返回對象 * @param sql * @param cls * @return */
public static Object query(String sql, Class<?> cls) { Map<String, Object> map = new HashMap<>(); List<Object> list = new ArrayList<>(); Field[] fields = cls.getDeclaredFields(); try { Connection conn = getConnection(); Statement statement = conn.createStatement(); ResultSet rs = statement.executeQuery(sql); ResultSetMetaData data = rs.getMetaData(); while (rs.next()) { Object obj= cls.newInstance(); for (int i = 1; i <= data.getColumnCount(); i++) { String columnName = data.getColumnName(i); map.put(columnName, rs.getObject(i)); } for (Field field : fields) { String name = field.getName(); field.setAccessible(true); Object value = map.get(name); field.set(obj, value); } list.add(obj); } return list; } catch (Exception e) { e.printStackTrace(); } return null; }