java实现jdbc查询结果集result转换成对应list集合

将查询结果集result转换成对应的list集合是Java应用程序开发中经常需要实现的任务之一。下面是具体的步骤:

1. 引入相关的依赖

如果你使用的是Maven项目,需要在pom.xml文件中引入相关依赖。例如,引入mysql-connector-java驱动程序,可以添加以下依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.25</version>
</dependency>

2. 建立数据库连接

可以使用Java的JDBC API建立数据库连接,例如:

Connection conn = null;
try {
    conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
    e.printStackTrace();
}

其中url代表数据库URL地址,username和password代表数据库连接的用户名和密码。如果连接成功,则返回Connection对象,否则抛出SQLException异常。

3. 执行查询语句

可以使用Java的Statement或PreparedStatement对象执行查询语句。例如,使用Statement执行查询语句:

Statement stmt = null;
ResultSet rs = null;
try {
    stmt = conn.createStatement();
    rs = stmt.executeQuery("SELECT * FROM myTable");
} catch (SQLException e) {
    e.printStackTrace();
}

其中myTable代表要查询的表名。如果执行成功,则返回ResultSet对象,否则抛出SQLException异常。

4. 将ResultSet转换成List集合

将ResultSet转换成List集合需要用到Java反射机制。可以定义一个公共的工具类,例如ResultSetConverter,提供一个静态方法将ResultSet转换成对应的List集合。

public class ResultSetConverter {
    public static <T> List<T> convert(ResultSet rs, Class<T> clazz) throws SQLException, IllegalAccessException, InstantiationException, NoSuchFieldException {
        List<T> list = new ArrayList<>();
        ResultSetMetaData rsmd = rs.getMetaData();
        while (rs.next()) {
            T obj = clazz.newInstance();
            for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                String columnName = rsmd.getColumnName(i);
                Field field = clazz.getDeclaredField(columnName);
                field.setAccessible(true);
                field.set(obj, rs.getObject(i));
            }
            list.add(obj);
        }
        return list;
    }
}

在上述代码中,convert方法的第一个参数是ResultSet对象,第二个参数是转换后的对象类型,在该方法中,使用ResultSetMetaData获取结果集的元数据,然后遍历ResultSet,通过反射机制进行设置值,最后将对象添加到List集合中。

示例一:将结果集转换成List集合

假设有一个Student类,包含id、name、age、score四个属性,可以使用以下代码将ResultSet转换成List集合:

List<Student> list = null;
try {
    ResultSet rs = stmt.executeQuery("SELECT * FROM student");
    list = ResultSetConverter.convert(rs, Student.class);
} catch (Exception e) {
    e.printStackTrace();
}

示例二:将结果集转换成List>集合

可以使用以下代码将ResultSet转换成List>集合:

List<Map<String, Object>> list = null;
try {
    ResultSet rs = stmt.executeQuery("SELECT * FROM student");
    ResultSetMetaData rsmd = rs.getMetaData();
    list = new ArrayList<>();
    while (rs.next()) {
        Map<String, Object> map = new HashMap<>();
        for (int i = 1; i <= rsmd.getColumnCount(); i++) {
            String columnName = rsmd.getColumnName(i);
            Object value = rs.getObject(i);
            map.put(columnName, value);
        }
        list.add(map);
    }
} catch (Exception e) {
    e.printStackTrace();
}

在上述代码中,使用HashMap存储每个表列名称和对应的值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现jdbc查询结果集result转换成对应list集合 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • Python中相见恨晚的技巧(记得收藏)

    Python中相见恨晚的技巧(记得收藏) 1. 列表推导式 列表推导式是一种快速创建新列表的方法,可以在一个列表中定义一个条件,然后在新的列表中使用这个条件来过滤和操作原始列表中的元素。 # 原始列表 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] # 列表推导式,将原始列表中的偶数取出来 even_numbers = [num …

    Java 2023年5月26日
    00
  • Java连接MySQL数据库增删改查的通用方法(推荐)

    我们知道,在Java应用中经常需要使用到MySQL数据库。而在使用MySQL数据库时,常见的操作就是增删改查。本文就来详细讲解如何通过Java程序连接MySQL数据库并实现增删改查操作。 1. 准备工作 在开始使用Java连接MySQL数据库之前,需要进行一些准备工作: 下载并安装MySQL数据库,创建数据库及数据表; 下载并配置MySQL数据库的JDBC驱…

    Java 2023年5月19日
    00
  • Java中的空指针异常如何避免?

    Java中的空指针异常(NullPointerException)是Java中最常见的异常之一。它表示当尝试使用一个空对象时,程序出现了异常。这个空对象可能是一个没有被实例化的对象、一个已经被释放的对象或者一个 null 对象。在 Java 中,可以通过以下方式来避免空指针异常。 1. 对象是否为空的判断 在使用对象之前一定要判断是否为空,只有在它不为空的情…

    Java 2023年4月27日
    00
  • 初探Java内部类的使用

    初探Java内部类的使用 什么是内部类 Java中的内部类,指的是定义在另一个类中的类。内部类被认为是一个单独的实体,能够访问其外部类的所有成员。因此,内部类拥有更多的访问权限及更加灵活的控制能力。 一个内部类可以具有任意的访问权限及修饰符,这其中最为关键的是private,即表示该内部类仅仅只能被它的外部类所访问。不同的内部类也拥有不同的访问权限及特殊性质…

    Java 2023年5月26日
    00
  • java邮件乱码的彻底解决方案

    下面是“Java邮件乱码的彻底解决方案”的完整攻略: 1. 问题描述 在使用Java程序发送邮件时,邮件内容中的中文字符可能会出现乱码现象,特别是在收件人使用的邮件客户端接收邮件时。如何避免这个问题,保证邮件内容能够正常显示呢? 2. 解决方案 Java发送邮件的原理是通过SMTP协议将纯文本或HTML格式的内容发送到邮件服务器,然后由邮件服务器将邮件传递到…

    Java 2023年5月20日
    00
  • 实例讲解JSP Model2体系结构(下)

    “实例讲解JSP Model2体系结构(下)”是一篇介绍JSP Model2体系结构的文章,其中涉及了该体系结构的设计思想、实现方法以及使用场景等方面的内容。本文将对该篇文章进行详细的讲解,具体包括以下几个部分: 1. 文章结构 该篇文章分为四个部分,分别是: JSP Model2体系结构概述 JSP Model2实例详解 JSP Model2的优缺点 总结…

    Java 2023年6月15日
    00
  • 详解Struts2中配置默认Action的方法

    下面我来详细讲解”详解Struts2中配置默认Action的方法”的完整攻略。 什么是默认Action 默认Action是Struts2中的一个重要概念。它是在请求URI中不包含action名称时,即使用URL访问Action时可以省略Action名称部分。例如:我们定义了一个名称为”hello”的Action,可以通过”http://localhost:8…

    Java 2023年6月2日
    00
  • Java利用递归算法实现查询斐波那契数

    下面我将详细讲解Java利用递归算法实现查询斐波那契数的完整攻略。 什么是斐波那契数 斐波那契数指的是一个数列,该数列从第3项开始每一项都等于前两项之和。这个数列如下所示:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …,通常用F(n)表示该数列的第n项。 利用递归算法实现查询斐波那契数 递归是一种通过自身调用来实现循…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部