代码:
public static List<Object> select(String sql, String o)
throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException {
Class c = Class.forName(o);
Field[] fls = c.getDeclaredFields();
List<String> list= new ArrayList<>();
for (int i = 0; i < fls.length; i++) {
System.out.println("公有属性之" + fls[i].getName());
list.add(fls[i].getName());
}
Object object = c.newInstance();
List<Object> l = new ArrayList<>();
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
// Retrieve by column name
String id = rs.getString("href");
String name = rs.getString("title");
// Display values
System.out.print("ID: " + id);
System.out.print(", name: " + name);
}
rs.close();
stmt.close();
conn.close();
return l;
}
我想获取传进来的类的所有属性,然后通过re.getString获得值,但是我不知道属性有多少个,在rs.next里for循环遍历的话就会失去rs的作用域。麻烦哪位大神帮我看看怎么写 = =。
高洛峰2017-04-18 10:30:16
실제로 리플렉션에 문제가 있습니다.
클래스 객체를 가져오려는 경우에도 외부 클래스를 동적으로 로드해야 하는 경우가 아니면 Class.formName을 전달하지 않는 것이 가장 좋습니다.
이렇게 쓰는 것이 귀하의 요구 사항에 맞는지 모르겠습니다
으아악高洛峰2017-04-18 10:30:16
org.springframework.jdbc.core.BeanPropertyRowMapper
이미 구현된 내용을 참고하고 따라해 보세요.