JAVA将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();//声明Mapfor (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;/***JAVA将ResultSet结果集遍历到List中* @author gblfy* @date 2020-10-14*/
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();//声明Mapfor (int i = 1; i <= columnCount; i++) {rowData.put(md.getColumnName(i), rs.getObject(i));//获取键名及值}list.add(rowData);}return list;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里敏捷教练:多团队开发一个产品的组织设计和思考

Scrum等敏捷开发框架&#xff0c;最初都是为5到9人的小团队设计的。通过保持专注和合理利用新技术&#xff0c;在相当长的时间里小团队仍然可以支撑业务发展。 随着业务成长&#xff0c;小团队的产出可能跟不上业务需要&#xff0c;团队就会面临规模化的问题。从1个团队拓展到…

10个你应该了解的Git命令(以及Git省时小窍门)

在本文中&#xff0c;我们将讨论那些作为开发人员、数据科学家或产品经理应该知道的各种各样的Git命令。并且将使用Git查看、删除和整理。此外&#xff0c;我们还将介绍如何使用Bash别名和Git编辑器配置转义Vim和节省时间的方法。 如果你不熟悉基本的git命令&#xff0c;那么在…

阿里工程师开发了一款免费工具,提升Kubernetes应用开发效率

对于使用了Kubernetes作为应用运行环境的开发者而言&#xff0c;在同一个集群中我们可以使用命名空间&#xff08;Namespace&#xff09;快速创建多套隔离环境&#xff0c;在相同命名空间下&#xff0c;服务间使用Service的内部DNS域名进行相互访问。 基于Kubernetes强大的隔离…

mongodb java spring_[Java教程]Spring 与 mongoDB 整合

[Java教程]Spring 与 mongoDB 整合02017-02-07 00:00:39首先需要引入jar包1 2 org.mongodb 3 mongodb-driver 4 3.3.0 5 6 7 org.springframework.data 8 spring-data-mongodb 9 1.9.4.RELEASE10 View Codespring中注入对象org.springframework.data.mongodb.core.MongoTemplat…

魔幻!过年在家,Java和Python程序员比工资打起来了...

Python真的野蛮生长到不行了&#xff1f;最近&#xff0c;笔者在某网站刷到一条信息&#xff0c;两个程序员在家比工资&#xff0c;竟然打起来了&#xff01;原因就是从事5年开发的Java程序员竟然工资输给了工作仅2年的Python程序员&#xff01;从上图招聘情况来了&#xff0c;…

Jmeter常用插件——梯度加压、响应时间、TPS_老版本

一、Jmeter梯度加压的jar Stepping Thread Group&#xff0c;下载方法如下&#xff1a; 1.访问网网站 https://jmeter-plugins.org/downloads/old/ 2.下载插件&#xff1a; 2.3.下载后需要解压 然后将JMeterPlugins-Standard.jar包放在jmeter安装目录的jmeter-3.0\lib\ext…

图解梯度下降背后的数学原理

敏捷在软件开发过程中是一个非常著名的术语&#xff0c;它背后的基本思想很简单&#xff1a;快速构建一些东西&#xff0c;然后得到一些反馈&#xff0c;根据反馈做出改变&#xff0c;重复此过程。目标是让产品更贴合用&#xff0c;让用户做出反馈&#xff0c;以获得设计开发出…

mysql数据迁移neo4j_neo4j数据库迁移---------Neo4j数据库导入导出的方法

Neo4j数据进行备份、还原、迁移的操作时&#xff0c;首先要关闭neo4j;/usr/share/neo4j/binneo4j stop如果出现Neo4j not running出现这种情况, Neo4j没有运行, 但是浏览器仍然可以访问neo4j数据库的情况, 直接执行导入数据后,是无法看到导入的数据库,其实这种情况下Neo4j仍在运…

rabbitmq配置文件字段spring.rabbitmq.publisher-confirms过时

spring.rabbitmq.publisher-confirms过时解决 在properties文件中确认消息报红 因为源码中过时配置级别设置了Error 新版本jar包配置换了就可以了 spring.rabbitmq.publisher-confirm-typecorrelated

如何利用 Webshell 诊断 EDAS Serverless 应用

本文主要介绍 Serverless 应用的网络环境以及 Serverless 应用容器内的环境&#xff0c;了解背景知识以及基本的运维知识后可以利用 Webshell 完成基本的运维需求。 Webshell 简介 用户可以通过阿里云控制台直接获取 ECS 的 Shell&#xff0c;从而完成自己的运维需求。如果 E…

刚刚,阿里云上线六大“战疫情”项目

作者 | Just出品 | CSDN云计算&#xff08;CSDNcloud&#xff09;抗击新冠肺炎&#xff0c;一线互联网大厂在行动。疫情发生以来&#xff0c;诸多科技公司都在思考如何利用技术来帮助抗击疫情&#xff0c;其中&#xff0c;阿里巴巴也是首当其冲。今天&#xff0c;阿里云上线了“…

MSSQL - 最佳实践 - 如何打码隐私数据列

摘要 在SQL Server安全系列专题月报分享中&#xff0c;我们已经分享了&#xff1a;如何使用对称密钥实现SQL Server列加密技术、使用非对称密钥加密方式实现SQL Server列加密、使用混合密钥实现SQL Server列加密技术、列加密技术带来的查询性能问题以及相应解决方案和行级别安…

springboot项目后台启动jar 和开机启动

注册服务&#xff0c;开机启动 添加服务 vim /etc/systemd/system/admin.service复制粘贴以下内容&#xff1a; [Unit] Descriptionconfig service Aftersyslog.target[Service] Typesimple ExecStart/usr/develop/java/jdk1.8.0_221/bin/java -jar -Xms3072m -Xmx3072m -X…

手把手教你使用TF服务将TensorFlow模型部署到生产环境

介绍 将机器学习&#xff08;ML&#xff09;模型应用于生产环境已成为一个火热的的话题,许多框架提供了旨在解决此问题的不同解决方案。为解决这一问题&#xff0c;谷歌发布了TensorFlow&#xff08;TF&#xff09;服务&#xff0c;以期待解决将ML模型部署到生产中的问题。 本…

一次搞定各种数据库SQL执行计划

作者 | 董旭阳TonyDong出品 | CSDN 博客执行计划&#xff08;execution plan&#xff0c;也叫查询计划或者解释计划&#xff09;是数据库执行 SQL 语句的具体步骤&#xff0c;例如通过索引还是全表扫描访问表中的数据&#xff0c;连接查询的实现方式和连接的顺序等。如果 SQL 语…

阿里云MVP北京闭门会圆满落幕 多把“利剑”助力开发者破阵蜕变

3月21日&#xff0c;北京国家会议中心&#xff0c;阿里云北京峰会吸引了全球计算机行业的目光。十年时间&#xff0c;阿里云开创中国云时代&#xff0c;研发了属于自己的云操作系统和城市AI平台&#xff0c;云普惠各行各业数百万客户。下一个十年&#xff0c;在阿里云战略升级为…

linux下后台启动springboot项目

https://www.cnblogs.com/sueyyyy/p/9958836.html

python3 django开发_python3开发进阶-Django框架学习前的小项目(一个简单的学员管理系统)...

自己独立写一个学员管理系统表结构&#xff1a;班级表&#xff1a;-id-grade_name学生表&#xff1a;-id-student_name-grade 关联外键班级表老师表&#xff1a;-id-teacher_name-grades (多对多 关联班级表)在写小项目之前我们先复习一下小知识&#xff1a;1、 form表单提交数…

“云原生全家桶“KubeSphere 如何让企业从容迈进云原生时代?

作者 | 刘丹来源 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;最近两年&#xff0c;云原生大火。究其原因&#xff0c;“数字化转型”几乎成为所有企业当下最迫切的需求&#xff0c;在这样的趋势下&#xff0c;恰逢新旧IT架构升级的契机&#xff0c;容器、微服…

Kubernetes Ingress 日志分析与监控的最佳实践

Ingress 主要提供 HTTP 层&#xff08;7 层&#xff09;路由功能&#xff0c;是目前 K8s 中 HTTP/HTTPS 服务的主流暴露方式。为简化广大用户对于 Ingress 日志分析与监控的门槛&#xff0c;阿里云容器服务和日志服务将 Ingress 日志打通&#xff0c;只需要应用一个 yaml 资源即…