把ResultSet对象转变成List对象

private static List<Map<String, Object>> convertRS2List(ResultSet rs) throws SQLException {
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		// return the description of this ResultSet object's columns
		ResultSetMetaData rsMetaData = rs.getMetaData();
		// return the number of columns
		int columnCount = rsMetaData.getColumnCount();
		String columnName = "";
		while (rs.next()) {
			Map<String, Object> rowData = new HashMap<String, Object>();
			for (int i = 1; i <= columnCount; i++) {
				// return 第i列的column name
				columnName = rsMetaData.getColumnName(i);
				rowData.put(columnName, rs.getObject(i));
			}
			list.add(rowData);
		}
		return list;
}

可以查看common-dbUtils-xxx.jar包中BeanListHander的handle()方法,里面有此方法的代码。

要将ResultSet换为List对象,可以使用反射来实现。首先,需要定义一个静态方法resultSetToList,该方法接受一个ResultSet对象和一个Class对象作为参数。然后,在方法内部创建一个空的List对象,用于存储换后的结果。接下来,使用while循环遍历ResultSet对象的每一行数据。在循环内部,利用反射创建一个实例化对象,并获取该对象的所有属性。然后,使用反射为每个属性赋值,将ResultSet中对应的列的值赋给对象的属性。最后,将换后的对象添加到List中。最后,返回换后的List对象。 以下是一个示例代码: ```java import java.lang.reflect.Field; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class ResultSetToList { public static <T> List<T> resultSetToList(ResultSet rs, Class<T> cls) { List<T> list = new ArrayList<T>(); try { while (rs.next()) { T obj = cls.newInstance(); Field[] fields = cls.getDeclaredFields(); for (Field fd : fields) { fd.setAccessible(true); fd.set(obj, rs.getObject(fd.getName())); } list.add(obj); } } catch (SQLException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return list; } } ``` 以上代码中,我们定义了一个ResultSetToList类,并在该类中实现了一个静态方法resultSetToList。该方法接受一个ResultSet对象和一个Class对象作为参数,并返回一个换后的List对象。在方法内部,我们使用反射来实现ResultSetList换。首先,我们创建一个空的List对象,用于存储换后的结果。然后,使用while循环遍历ResultSet对象的每一行数据。在循环内部,我们利用反射创建一个实例化对象,并获取该对象的所有属性。然后,使用反射为每个属性赋值,将ResultSet中对应的列的值赋给对象的属性。最后,将换后的对象添加到List中。最后,返回换后的List对象。 请注意,该方法要求数据库的列名必须和Java实体类的属性名、类型完全一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值