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; }