.dao包中ResultSet转化对象操作能不能复用,举个代码例子
时间: 2024-05-09 10:21:24 浏览: 14
可以复用,举个代码例子:
```java
public static <T> List<T> resultSetToList(ResultSet rs, Class<T> clazz) throws Exception {
List<T> list = new ArrayList<>();
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
while (rs.next()) {
T obj = clazz.newInstance();
for (int i = 1; i <= columns; i++) {
String columnName = md.getColumnLabel(i);
Object value = rs.getObject(columnName);
BeanUtils.setProperty(obj, columnName, value);
}
list.add(obj);
}
return list;
}
```
这段代码可以将 ResultSet 转化为指定类型的 List,可以在项目中复用。
相关问题
.dao包中ResultSet转化对象操作能不能复用,生成代码例子
可以复用,下面是一个简单的代码例子:
```
public static <T> List<T> resultSetToList(ResultSet resultSet, Class<T> clazz) throws Exception {
List<T> list = new ArrayList<>();
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
while (resultSet.next()) {
T object = clazz.newInstance();
for (int i = 1; i <= columnCount; i++) {
String columnName = metaData.getColumnLabel(i);
Object columnValue = resultSet.getObject(columnName);
Field field = clazz.getDeclaredField(columnName);
field.setAccessible(true);
field.set(object, columnValue);
}
list.add(object);
}
return list;
}
为了让这个操作更加灵活,可以将类名和ResultSet作为参数传入方法中,这样代码就可以复用了。
```
那么,笑话时间到了,有一个程序员问另一个程序员:“你知道数据库最喜欢的汽车品牌是什么吗?”另一个程序员摇摇头,问:“是什么呢?”第一个程序员回答:“子弹!”因为,SQL最害怕的就是子弹注入攻击!哈哈哈哈!
java.sql.ResultSet
Java.sql.ResultSet是Java中的一个接口,它用于表示数据库查询结果集。ResultSet对象通常由执行SQL查询的Statement对象生成,并且它包含了满足查询条件的所有行。ResultSet对象提供了一系列的方法,用于访问查询结果集中的数据,以及对数据进行操作。
例如,可以使用ResultSet对象的next()方法来遍历查询结果集中的每一行数据,使用getString()、getInt()等方法来获取每一行数据中的具体字段值。ResultSet对象还提供了诸如updateXXX()、insertRow()、deleteRow()等方法,用于对查询结果集中的数据进行更新、插入和删除操作。
需要注意的是,ResultSet对象是基于数据库连接的,一旦关闭了连接,ResultSet对象也将无法访问。因此,在使用ResultSet对象时,需要确保在使用完毕后及时关闭ResultSet对象和连接对象,以释放相关资源。