小弟在该方法执行Field field = cla.getDeclaredField(columnName);的时候出现一下异常:
java.lang.NoSuchFieldException: c_name
c_name是数据库中的一个字段。
代码如下:
public List find(String sql, Class cla, Object... obj) throws Exception {
List list = new ArrayList();
Connection con = DBConnection.getConnection();
PreparedStatement pst = null;
ResultSet rs = null;
try {
pst = con.prepareStatement(sql);
for(int i = 0;i <obj.length;i++){
pst.setObject(i+1, obj[i]);
}
rs = pst.executeQuery();
while(rs.next()){
//通过类模板获得javabean对象,每一行数据都对应一个javabean对象
Object object = cla.newInstance();
//通过结果集获得元数据(包括列名,查询的列数等等)
ResultSetMetaData meta = rs.getMetaData();
//循环查询出的列数据
for(int i = 1;i <= meta.getColumnCount();i++){
//获得每条数据的列名
String columnName = meta.getColumnName(i);
try {
//根据列名找到Javabean中对应的属性
Field field = cla.getDeclaredField(columnName);
//如果访问的属性是私有的,必须加上setAccessible(true)才能访问
field.setAccessible(true);
//给Javabean的属性设置值
field.set(object, rs.getObject(columnName));
} catch (Exception e) {
System.out.println(e.getMessage());
throw e;
}
}
list.add(object);
}
} catch (Exception e) {
System.out.println(e.getMessage());
throw e;
} finally{
DBConnection.close(con, pst, null);
}
return list;
}
麻烦各位大神了。。小弟才学习不久。。。还望海涵。。