和其他的文章一样,也是利用反射封装,最后返回list集合
且能适应不同的数据类型(Data除外)
public class jdbcUtils {
/**
* MySQL数据库将result set风筝为Bean对象,需要数据库字段名和兵对象属性名一致(不区分大小写)
* @param resultSet
* @param beanClass
* @param <T>
* @return 返回Bean对象数组
* @throws Exception
*/
public static <T> List<T> ResultSetToBean(ResultSet resultSet, Class beanClass) throws Exception {
// 获取Bean对象内的所有属性
Field[] fields = beanClass.getDeclaredFields();
List<T> beanList = new ArrayList<>();
if (resultSet != null) {
while (resultSet.next()) {
// 每当有一行数据就创建一个Bean对象
T object = (T) beanClass.newInstance();
for (Field field : fields) {
String fieldName = field.getName();
// 利用字符串拼接,将属性名的首字母变为大写,获取对应的set方法。
Method setField = beanClass.getMethod("set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1), field.getType());
// 利用MySQL数据库不区分大小写的性质获取对应字段的值。
setField.invoke(object,resultSet.getObject(fieldName.toUpperCase()));
}
beanList.add(object);
}
}
return beanList;
}
}
测试方法
public void test() throws Exception {
connection = jdbcUtils.getConnection();
ps = connection.prepareStatement("select * from t_book");
resultSet = ps.executeQuery();
List<Book> books = jdbcUtils.ResultSetToBean(resultSet, Book.class);
for (Book book: books) {
System.out.println(book.toString());
}
}
测试结果图
个人也在慢慢的自学java web如果有哪里不好,敬请指正