/** 

 * 通过ResultSet构建一个指定类型的对象 

 * 

 * @param <T> 

 * @param clazz 

 * @param rs 

 * @return 

 */ 

 private <T> T buildObject(Class<T> clazz, ResultSet rs) { 

 if (rs == null) { 

 return null; 

 } 


 T object = null; 


 try { 

 // 通过默认构造方法创建一个新的对象 

 object = clazz.getConstructor(new Class[] {}).newInstance(new Object[] {}); 

 // 获得对象的所有属性 

 Field[] fields = clazz.getDeclaredFields(); 

 for (int i = 0; i < fields.length; i++) { 

 // 获取属性名称 

 String fieldName = fields[i].getName(); 

 // 获取属性名称的首字母,并将该字母转为大写形式 

 String firstLetter = fieldName.substring(0, 1).toUpperCase(); 

 // 获得和属性对应的setXXX()方法的名字 

 String setMethodName = "set" + firstLetter + fieldName.substring(1); 

 // 获得和属性对应的setXXX()方法 

 Method setMethod = clazz.getMethod(setMethodName, new Class[] { fields[i].getType() }); 

 // 调用目标对象的setXXX()方法对其属性赋值 

 setMethod.invoke(object, new Object[] { rs.getObject(fieldName.toLowerCase()) }); 

 } 

 } catch (Exception e) { 

 e.printStackTrace(); 

 object = null; 

 } 


 return object; 

 }