【Java】将ResultSet封装为Bean对象

    科技2024-10-11  23

    和其他的文章一样,也是利用反射封装,最后返回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如果有哪里不好,敬请指正

    Processed: 0.008, SQL: 8