返回顶部
首页 > 资讯 > 精选 >Java怎么将ResultSet结果集遍历到List中
  • 623
分享到

Java怎么将ResultSet结果集遍历到List中

2023-07-05 06:07:18 623人浏览 泡泡鱼
摘要

今天小编给大家分享一下Java怎么将ResultSet结果集遍历到List中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如

今天小编给大家分享一下Java怎么将ResultSet结果集遍历到List中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

如何将ResultSet结果集遍历到List中

今天在使用jstl标签展示查询结果时遇到一个小问题,即如何将ResultSet对象传递给前台页面。

在默认情况中我们在使用数据库查询时

public List selectDataFromJdbc() throws sqlException, ClassNotFoundException {        Class.forName("oracle.jdbc.driver.OracleDriver"); //加载MYSQL JDBC驱动程序        String url = "jdbc:oracle:thin:@192.168.x.222:1521:orcl";        Connection conn = DriverManager.getConnection(url, "username", "passwd");        Statement stat = conn.createStatement();        String sql = "select u.user_id ,u.account,u.name from " + "sys_user u";         // 格式: String sql = "select * from " + TableName where 1=1;        ResultSet rs = stat.executeQuery(sql);        List list = convertList(rs);        stat.close();        conn.close();        return list;    }

在正常情况下,我们是不能直接将 ResultSet 记录集 rs 直接传递给前台的,因为 ResultSet 不仅无法进行循环遍历 (即只能每行遍历,从0至end ,执行一次),而且在实际应用中,它还必须被关闭。

当关闭后,rs为null ,结果不再存在。

在这时我们就需要将 ResultSet 对象进行遍历到 list 中,代码如下:

private static List convertList(ResultSet rs) throws SQLException {        List list = new ArrayList();        ResultSetMetaData md = rs.getMetaData();//获取键名        int columnCount = md.getColumnCount();//获取行的数量        while (rs.next()) {            Map rowData = new HashMap();//声明Map            for (int i = 1; i <= columnCount; i++) {                rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值            }            list.add(rowData);        }        return list;    }

查看以上代码,可以看出我们使用 Map 与 MetaDate 使 ResultSet 储存到 list 中的,因为 list 只能存放元素的索引而不能存放元素的值,所以我们要用到 Map 。

使用这种方法的好处就是可以创建高复用性的代码 ,因为我们不需要每次通过指定键名取值。

实际工作间接,与君共勉。

代码

package com.example.demo.test;import java.sql.*;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class getColumnName {    public static void main(String[] args) throws SQLException, ClassNotFoundException {        getColumnName getColumnName = new getColumnName();        List list = getColumnName.selectDataFromJdbc();        for (Object o : list) {            System.out.println("DDD:" + o);        }    }    public List selectDataFromJdbc() throws SQLException, ClassNotFoundException {        Class.forName("oracle.jdbc.driver.OracleDriver"); //加载Mysql JDBC驱动程序        String url = "jdbc:oracle:thin:@10.5.6.222:1521:lisdb";        Connection conn = DriverManager.getConnection(url, "fisknow", "fisknow");        Statement stat = conn.createStatement();        String sql = "select u.user_id ,u.account,u.name from " + "sys_user u";        // 格式: String sql = "select * from " + TableName where 1=1;        ResultSet rs = stat.executeQuery(sql);        List list = convertList(rs);        stat.close();        conn.close();        return list;    }    private static List convertList(ResultSet rs) throws SQLException {        List list = new ArrayList();        ResultSetMetaData md = rs.getMetaData();//获取键名        int columnCount = md.getColumnCount();//获取行的数量        while (rs.next()) {            Map rowData = new HashMap();//声明Map            for (int i = 1; i <= columnCount; i++) {                rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值            }            list.add(rowData);        }        return list;    }}

使用泛型封装结果集ResultSet遍历成List集合

public  <T> List<T>  findModelListBySqlAndParam(String sql,List<Object> param,T t) throws Exception{        //定义一个集合来存放需要转成的对象集合        List<T> list=new ArrayList<T>();        //获取当前类        Class<?> c=t.getClass();//泛型的反射机制(?问号可写可不写)java.lang.reflect        //遍历结果集,封装成外界用户所需要的对象集合        //1>获取结果集        ResultSet rs=executeQuery(sql, param);        //2>开始遍历        while(rs.next()){            //初始化对象            @SuppressWarnings("unchecked")            T obj= (T)c.newInstance();            //获取当前类一共多少个属性啊            Field[] fields=c.getDeclaredFields();            for(Field f:fields){                //获取当前属性的属性名子                String fname=f.getName();                //获取当前的属性的类型(简称)  java.lang.String                String type=f.getType().getSimpleName();                //*****************  取出来当前属性对应的数据库的值了 ****************                //在此方法名中要求类的属性名和数据库的字段名相同                Object value=null;                if(type.equalsIgnoreCase("string")){                    value=rs.getString(fname);                }else if(type.equalsIgnoreCase("int")){                    value=rs.getInt(fname);                }else if(type.equalsIgnoreCase("Integer")){                    value=rs.getInt(fname);                }else if(type.equalsIgnoreCase("Double")){                    value=rs.getDouble(fname);                }else if(type.equalsIgnoreCase("Float")){                    value=rs.getFloat(fname);                }else if(type.equalsIgnoreCase("date")){                    value=rs.getDate(fname);                }else if(type.equalsIgnoreCase("long")){                    value=rs.getLong(fname);                }                //*****************  将取出来当前属性的值设置给当前对象obj****************                //1>获取当前对象的所有set方法,并找到当前取出来的属性对应的set方法                Method[] methods=c.getDeclaredMethods();//获取所有的方法                for(Method m:methods){                    //获取当前方法名                    String methodName=m.getName();                    //判断是不是当前属性                    if(methodName.equalsIgnoreCase("set"+fname)){                        //执行该方法                        m.invoke(obj, value);                    }                }            }            list.add(obj);        }        return list;    }

Java怎么将ResultSet结果集遍历到List中

以上就是“Java怎么将ResultSet结果集遍历到List中”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Java怎么将ResultSet结果集遍历到List中

本文链接: https://lsjlt.com/news/350247.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java怎么将ResultSet结果集遍历到List中
    今天小编给大家分享一下Java怎么将ResultSet结果集遍历到List中的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如...
    99+
    2023-07-05
  • Java如何将ResultSet结果集遍历到List中
    目录如何将ResultSet结果集遍历到List中使用泛型封装结果集ResultSet遍历成List集合总结如何将ResultSet结果集遍历到List中 今天在使用jstl标签展示...
    99+
    2023-02-28
    Java遍历List ResultSet结果集 Java遍历
  • mysql怎么循环遍历结果集
    在MySQL中,可以使用游标(cursor)来循环遍历结果集。下面是一个示例代码,展示了如何使用游标来循环遍历结果集:```DELI...
    99+
    2023-09-11
    mysql
  • Java中逆序遍历List集合的实现
    目录1 问题2 方法3 结语1 问题 手写一个程序,完成List集合对象的逆序遍历 2 方法 创建List接口的多态对象 向创建好list集合添加元素 使用hasPreviou...
    99+
    2023-01-28
    Java 逆序遍历List Java 逆序遍历
  • 怎么使用mysql游标遍历结果集
    使用MySQL游标遍历结果集可以按照以下步骤进行: 声明一个游标变量,并将查询结果赋值给游标变量。 使用DECLARE语句声明游标...
    99+
    2024-02-29
    mysql
  • Java中,Map、List集合遍历、去重方式超详细总结
    Java中常用的遍历方式有: 普通for循环for-each循环使用迭代器(Iterator)Java8中的Stream   Map集合中常用的遍历方式: 4种 1.使用keySet()方法遍历Map的键: Map map = new...
    99+
    2023-10-07
    java 开发语言
  • java怎么遍历set集合
    在Java中,可以使用foreach循环或迭代器来遍历Set集合。1. 使用foreach循环遍历Set集合:```javaSet ...
    99+
    2023-10-10
    java
  • Java中四种遍历List的方法总结(推荐)
    实例如下:package com.ietree.basic.collection.loop;import java.util.ArrayList;import java.util.Iterator;import java.util.List...
    99+
    2023-05-31
    java list 遍历
  • MySQL中怎么通过游标与LOOP循环遍历结果集
    在MySQL中,可以使用游标和LOOP循环来遍历结果集。以下是一个示例: DELIMITER // DROP PROCED...
    99+
    2024-04-30
    MySQL
  • shell怎么遍历sql查询结果
    在shell脚本中遍历SQL查询结果可以使用如下方法: 使用while循环遍历查询结果: #!/bin/bash # 执行SQ...
    99+
    2024-04-09
    shell sql
  • Java中Map集合的三种遍历方式小结
    目录Map 集合的遍历方式有 3 种:Map 集合的遍历方式一: 键找值键找值涉及到的 API:Map 集合的遍历方式二: 键值对键值对设计到的 API:Map 集合的遍历方式三: ...
    99+
    2022-12-26
    Java Map 集合遍历 Java Map 集合 Java 集合遍历
  • jquery怎么将信息遍历到界面上
    本篇内容主要讲解“jquery怎么将信息遍历到界面上”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery怎么将信息遍历到界面上”吧!示例代码:<script> &nb...
    99+
    2023-06-17
  • mybatis怎么使用foreach遍历list集合或者array数组
    这篇文章主要介绍“mybatis怎么使用foreach遍历list集合或者array数组”,在日常操作中,相信很多人在mybatis怎么使用foreach遍历list集合或者array数组问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-06-20
  • C++中怎么实现遍历集合
    C++中怎么实现遍历集合,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Java中,常见的遍历集合方式如下:Iterator iter = l...
    99+
    2023-06-17
  • Java迭代器遍历list的方法怎么使用
    这篇文章主要介绍“Java迭代器遍历list的方法怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java迭代器遍历list的方法怎么使用”文章能帮助大家解决问题。迭代器可用于遍历ArrayL...
    99+
    2023-07-04
  • sql怎么将多个结果集合并到一行
    在SQL中,可以使用`GROUP_CONCAT`函数将多个结果集合并到一行。假设我们有一个名为`employees`的表,包含以下数...
    99+
    2023-10-12
    sql
  • java中set集合遍历的方法是什么
    在Java中,Set集合可以通过迭代器(Iterator)或者增强for循环(foreach)来进行遍历。 使用迭代器遍历Set集合...
    99+
    2024-03-04
    java
  • 怎么在java中遍历数组
    这篇文章将为大家详细讲解有关怎么在java中遍历数组,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系...
    99+
    2023-06-14
  • 使用Java怎么将List拆分为多个list集合
    使用Java怎么将List拆分为多个list集合?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、如何将List拆分为多个小list如何将List拆分多个小li...
    99+
    2023-06-14
  • java中的集合元素怎么利用foreach进行遍历
    本篇文章给大家分享的是有关java中的集合元素怎么利用foreach进行遍历,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。代码示例import java.util.*; pu...
    99+
    2023-05-31
    java foreach 遍历
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作