JAVA中将数据库查询的ResultSet结果集转为对象实体类的List集合(反射)

import java.lang.reflect.Field;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ResultSetToList {
    //定义静态方法,并根据泛型和反射,实现转换
    //注意:要求数据库的列名必须和JAVA实体类的属性名、类型完全一致
    public static <T> List<T> resultSetToList(ResultSet rs,Class<T> cls) {
        //定义接收的集合
        List<T> list = new ArrayList<T>();
        //创建一个对象,方便后续反射赋值
        Object obj=null;
        try {
            while (rs.next()) {
                //利用反射获取,执行类的实例化对象
                obj = cls.newInstance();
                //利用反射,获取对象类信息中的所有属性
                Field [] fields = cls.getDeclaredFields();
                for(Field fd:fields){
                 		   //屏蔽权限
                 		   fd.setAccessible(true);
                  		  //为对象属性赋值
                  		 fd.set(obj,rs.getObject(fd.getName()));
                    }
                }
                //返回转换后的集合
                list.add((T)obj);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        //返回集合
        return list;
    }
}

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是使用Java代码从数据库查询的结果转换为List对象的示例: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; public class QueryResultToListExample { public static void main(String[] args) { List<User> userList = new ArrayList<>(); String url = "jdbc:mysql://localhost:3306/mydb"; String user = "root"; String password = "password"; try (Connection conn = DriverManager.getConnection(url, user, password)) { String sql = "SELECT * FROM users"; PreparedStatement statement = conn.prepareStatement(sql); ResultSet resultSet = statement.executeQuery(); while (resultSet.next()) { User user = new User(); user.setId(resultSet.getInt("id")); user.setName(resultSet.getString("name")); user.setEmail(resultSet.getString("email")); userList.add(user); } } catch (Exception e) { e.printStackTrace(); } System.out.println(userList); } } class User { private int id; private String name; private String email; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", email='" + email + '\'' + '}'; } } ``` 这个例子中,我们首先创建了一个空的 `List<User>` 对象,然后使用 JDBC 连接到数据库并执行查询语句。在每次迭代结果时,我们将每个行转换为 `User` 对象并将其添加到 `userList` 中。最后,我们将结果输出到控制台。 请注意,此示例使用了 Java 7 的 try-with-resources 语句,以确保在完成后关闭连接和语句。此外,还必须导入适当的 JDBC 驱动程序(此处未包含在代码中)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值