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存储每个表列名称和对应的值。

阅读剩余 55%

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

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

相关文章

  • Java中HashMap与String字符串互转的问题解决

    Java中HashMap与String字符串互转的问题解决 在Java开发中,我们经常会使用到HashMap来做键值对的操作。有时候我们需要把HashMap转换成字符串,或者把字符串转换成HashMap。那么,如何进行这样的操作呢?下面是两种方式来解决问题。 使用Java中自带的方法进行转换 Java中提供了很多可以直接转换的方法,我们可以使用这些方法来进行…

    Java 2023年5月27日
    00
  • java中的Io(input与output)操作总结(四)

    这里是对“java中的Io(input与output)操作总结(四)”的详细讲解: 一、Io概述 Io(input与output)操作是Java中常用的一种操作方式,它涉及到java.io包中的各种类,我们可以通过Io来读取文件、写入文件、创建文件、删除文件等操作。Java中的Io操作分为输入和输出两个方向,分别由InputStream、Reader和Out…

    Java 2023年5月27日
    00
  • Spring框架学习之Spring @Autowired实现自动装配的代码

    在Spring框架中,我们可以使用@Autowired注解来实现自动装配。本文将详细介绍@Autowired注解的使用方法和实现原理。 1. @Autowired注解的使用方法 @Autowired注解可以用来自动装配Spring容器中的Bean。我们可以将@Autowired注解应用于构造函数、属性或方法上,Spring容器会自动将相应的Bean注入到这些…

    Java 2023年5月18日
    00
  • Java项目之java+springboot+ssm实现理财管理系统设计

    Java项目之java+springboot+ssm实现理财管理系统设计 项目介绍 本项目是一个基于Java、Spring Boot、SSM框架的理财管理系统,可以帮助用户管理个人的理财信息,包括资产、收支情况、投资组合等,以及提供投资建议等功能。 技术栈 本项目的技术栈包括: Java SE Spring Boot Spring Framework MyB…

    Java 2023年5月19日
    00
  • Java Scanner对象中hasNext()与next()方法的使用

    Java Scanner对象是一个用于从输入流中获取用户输入信息的类。其中,hasNext()和next()是Scanner类中常用的方法,用于读取输入流中的下一个token(以空格、tab、换行符为分隔符),并检测输入流是否还有下一个token。 hasNext()方法的使用 hasNext()方法用于检测输入流是否还有下一个token。其语法如下: pu…

    Java 2023年5月26日
    00
  • Java网络编程之简单的服务端客户端应用实例

    下面是详细讲解“Java网络编程之简单的服务端客户端应用实例”的完整攻略。 简介 网络编程是指在计算机网络环境下,不同计算机之间利用程序进行数据交换。Java提供了一套完善的网络编程库,可以快速实现各种网络应用程序。本篇攻略将针对Java网络编程的服务端和客户端进行详细介绍,并通过示例演示其具体实现方法。 服务端 服务端是指在网络中提供服务的计算机程序,主要…

    Java 2023年5月23日
    00
  • shiro 与 SpringMVC的整合完美示例

    以下是关于“shiro 与 SpringMVC的整合完美示例”的完整攻略,其中包含两个示例。 shiro 与 SpringMVC的整合完美示例 shiro是一个强大的Java安全框架,可以用于身份验证、授权、加密等。在本文中,我们将讲解如何将shiro与SpringMVC整合,以实现安全的Web应用程序。 整合步骤 将shiro与SpringMVC整合的步骤…

    Java 2023年5月17日
    00
  • Springboot 2.6集成redis maven报错的坑记录

    首先我们来讲一下 Spring Boot 2.6 集成 Redis 的步骤。 步骤一:添加 Redis 依赖 在 Maven 项目中,我们需要在 pom.xml 文件中添加 Redis 相关依赖。 <dependency> <groupId>org.springframework.boot</groupId> <ar…

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