jdbc封装成对象-Demo
public static <T> List<T> R2Bean(String sql, Class clazz) {
// 1. 获取连接
Connection connection = DBUtil.getConnection();
// 2. 执行sql
ResultSet resultSet = DBUtil.executeR(connection, sql);
// 3. 反射封装成对象
return getBean(resultSet, clazz);
}
private static <T> List<T> getBean(ResultSet resultSet, Class<T> cls) {
if(resultSet==null){
return null;
}
String[] colNames = null;
ArrayList<T> beans = new ArrayList();
try {
T bean = cls.newInstance();
ResultSetMetaData metaData = resultSet.getMetaData();
String colName = null;
colNames = new String[metaData.getColumnCount()];
while(resultSet.next()){
for (int i = 1; i <= metaData.getColumnCount(); i++) {
colName = metaData.getColumnName(i).toLowerCase();
Field declaredField = cls.getDeclaredField(colName);
declaredField.setAccessible(true);
Object val = resultSet.getObject(colName);
declaredField.set(bean, val);
}
beans.add(bean);
}
} catch (SQLException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} finally {
DBUtil.close(null, null, resultSet);
}
return beans;
}