Connection conn = DriverManager.getConnection(dbURL, properties);
if (conn != null) {
Statement statement = conn.createStatement();
ResultSet resultSet = statement.executeQuery(" select * from student");
BeanInfo beanInfo = Introspector.getBeanInfo(Student.class, Object.class);
while (resultSet.next()) {
Student student = new Student();
for (PropertyDescriptor propertyDescriptor : beanInfo.getPropertyDescriptors()) {
String propertyName = propertyDescriptor.getName();//属性名
Class<?> propertyType = propertyDescriptor.getPropertyType();//属性类型
String columnName = getTableMapperColumnName(propertyName);
String resultMethodStr = getResultMethod(propertyType.toString());//结果集取数方法
Method resultMethod = ResultSet.class.getMethod(resultMethodStr, String.class);
Object columnValue = resultMethod.invoke(resultSet, columnName);//结果集的值
Method writeMethod = propertyDescriptor.getWriteMethod();//Setter
writeMethod.invoke(student, columnValue);
}
System.out.println(student.toString());
}
}
private static String getTableMapperColumnName(String propertyName) {
if (propertyName.equals("firstName")) {
return "first_name";
} else if (propertyName.equals("lastName")) {
return "last_name";
} else {
return propertyName;
}
}
private static String getResultMethod(String propertyType) {
//return "get"+propertyType.substring(0,1).toUpperCase()+propertyType.substring(1,propertyType.length());
switch (propertyType) {
case "Integer":
return "getInteger";
case "int":
return "getInt";
case "String":
return "getString";
case "Long":
return "getLong";
default:
return "getString";
}
}