/**
* Using reflection to storage the result from database into Bean class.
*
*/
public static List resultSetToList(ResultSet rs, Class
> cls) {
Method[] methods = cls.getDeclaredMethods();
int methodLength = methods.length;
int index;
Map map = new HashMap();
// record all methods name in a HashMap, for quickly locate.
for (index = 0; index < methodLength; index++) {
map.put(methods[index].getName().toLowerCase(), index);
}
ResultSetMetaData meta = null;
Object obj = null;
List list = new ArrayList();
try {
meta = rs.getMetaData();
int colCount = meta.getColumnCount();
while (rs.next()) {
obj = cls.newInstance();
for (int i = 1; i <= colCount; i++) {
String colName = meta.getColumnName(i);
String setMethodName = "set" + colName;
// System.out.println(setMethodName);
int j = map.get(setMethodName.toLowerCase()); //get index of method array
setMethodName = methods[j].getName();
Object value = rs.getObject(colName);
if(value == null){
continue;
}
try {
Method setMethod = obj.getClass().getMethod(setMethodName, value.getClass());
setMethod.invoke(obj, value);
} catch (Exception e) {
System.out.println(setMethodName + " exception");
e.printStackTrace();
}
}
list.add(obj);
}
} catch (InstantiationException | IllegalAccessException | SQLException e) {
e.printStackTrace();
}
return list;
}