04 JDBCUtil

静态代码块加载properties配置文件,注册驱动
静态方法创建连接
静态方法关闭,一个方法关connection,statement,另一个方法多关一个resultSet

package com.aistart.tech.until;import java.io.IOException;
import java.sql.*;
import java.util.Properties;public class JDBCUtil {public static final Properties info = new Properties();static {try {info.load(JDBCUtil.class.getClassLoader().getResourceAsStream("com/aistart/tech/config/jdbc.properties"));Class.forName(info.getProperty("driver"));} catch (ClassNotFoundException e) {throw new RuntimeException(e);} catch (IOException e) {throw new RuntimeException(e);}}public static Connection getConnection() throws SQLException {//获取配置中的urlString url = info.getProperty("url");//获取用户和密码String user = info.getProperty("user");String password = info.getProperty("password");Connection connection = null;if (connection==null){connection = DriverManager.getConnection(url,user,password);}return connection;}public static void closeAll(Connection connection, Statement statement){if (statement != null) {try {statement.close();} catch (SQLException e) {throw new RuntimeException(e);}}if (connection != null) {try {connection.close();} catch (SQLException e) {throw new RuntimeException(e);}}}public static void closeAll(Connection connection, Statement statement, ResultSet resultSet){if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {throw new RuntimeException(e);}}closeAll(connection,statement);}}

创建Map,键代表字段别名
把id传入占位符中执行sql
获取元数据的列数,根据列数循环获取每列的别名及相应的值,put到Map中

//根据id获取一行内容
public Map<String, Object> getEmpInfoById(int id) {Map<String, Object> map = new HashMap<>();Connection connection  =null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {connection = JDBCUtil.getConnection();preparedStatement = connection.prepareStatement("select e.last_name as emp_name,job_title from employees e left join jobs j on e.job_id = j.job_id\n" +"where employee_id =? ");preparedStatement.setInt(1,id);resultSet= preparedStatement.executeQuery();//获取结果的列信息,元数据ResultSetMetaData metaData = resultSet.getMetaData();//获取总共有几列int columnCount = metaData.getColumnCount();if (resultSet.next()){for (int i = 1; i <= columnCount ; i++) {//是对应数据库表中原本的列名String columnName = metaData.getColumnName(i);//返回的table中名字(如果取别名,拿到就是别名)String columnLabel = metaData.getColumnLabel(i);map.put(columnLabel,resultSet.getString(columnLabel));
//                map.put()}return map;}} catch (SQLException e) {throw new RuntimeException(e);}finally {JDBCUtil.closeAll(connection,preparedStatement,resultSet);}return null;}@Testpublic void empTest(){Map<String, Object> empInfoById = iEmpDao.getEmpInfoById(100);System.out.println(empInfoById.get("emp_name"));System.out.println(empInfoById.values());}

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

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

相关文章

Git和本地仓库托管到gitee

Git作用&#xff1a;记录代码内容&#xff0c;切换代码版本&#xff0c;实现多人开发 Git安装&#xff1a; 打开bash端 命令&#xff1a;git-v(查看版本&#xff09; 配置用户信息 git config --global user.name “用户名” git config --global user.email "邮箱名…

Spring Boot + Vue 实现文件导入导出功能

文章目录 1、概述2、后端实现&#xff08;Spring Boot&#xff09;3、前端实现&#xff08;Vue&#xff09;4、总结 1、概述 ​ 在现代Web应用开发中&#xff0c;文件的导入导出是一个常见的需求。Spring Boot作为后端开发的强大框架&#xff0c;搭配前端框架Vue&#xff0c;可…

颠覆传统:Web3如何塑造未来的数字经济

引言 近年来&#xff0c;随着数字化时代的到来&#xff0c;互联网已经成为人们生活中不可或缺的一部分。然而&#xff0c;随着技术的不断发展和社会的不断变迁&#xff0c;传统的Web2模式逐渐显露出一些弊端&#xff0c;如数据垄断、隐私泄露等问题&#xff0c;这促使人们寻求…

【数据结构】——线性表(顺序表加链表),万字解读(加链表oj详解)

前言 由于之前存在过对两者的区别考虑&#xff0c;所以把他们放在一起来说&#xff0c;更加容易区别和理解 对于有关线性表的概念这里就不展示了&#xff0c;这里主要是介绍线性表里面的这两个结构的知识点 一.顺序表 1.顺序表介绍 顺序表的存储结构和逻辑结构都是相邻的&a…

阿里云轻量应用服务器和ECS服务器有啥区别?2024年整理对比表

阿里云服务器ECS和轻量应用服务器有什么区别&#xff1f;轻量和ECS优缺点对比&#xff0c;云服务器ECS是明星级云产品&#xff0c;适合企业专业级的使用场景&#xff0c;轻量应用服务器是在ECS的基础上推出的轻量级云服务器&#xff0c;适合个人开发者单机应用访问量不高的网站…

02分布式搜索引擎ES

elasticsearch查询 1.DSL查询文档1.1.DSL查询分类1.2.全文检索查询1.3.精准查询1.4.地理坐标查询1.5.复合查询 2.搜索结果处理2.1.排序2.2.分页2.3.高亮2.4.总结 3.RestClient查询文档3.1.快速入门3.2.match查询3.3.精确查询3.4.布尔查询3.5.排序、分页3.6.高亮 1.DSL查询文档 …

JetPack之LiveData

目录 一、LiveData简介1.1 LiveData是什么&#xff1f; 二、LiveData使用2.1 LiveData基础使用2.2 LiveData搭配Service模拟后台消息2.3 LiveData在组件中的数据传递 三、LiveData应用场景 一、LiveData简介 1.1 LiveData是什么&#xff1f; LiveData是一种可观察的数据存储器…

L2-048 寻宝图 (DFS做法)

目录 1. 题目描述 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 2. 思路分析 3. 代码实现 原题链接&#xff1a;https://pintia.cn/problem-sets/994805046380707840/exam/problems/1649748772841508875?type7&page1 1.…

Golang 异步(bsd/linux)io

Golang 异步(bsd/linux)io 在日常开发中&#xff0c;读写文件的底层调用函数是syscall.Read/Write。一切都是围绕这两个函数展开的&#xff0c;不过有时候需要或者就是单纯想异步执行。liburing是linux上一个很好的原生异步io库&#xff0c;这里需要适配bsd派系的系统&#xf…

vue 中 清除form 校验状态

1 resetFields()&#xff1b;清除全部校验状态数据 this.$refs.form.resetFields(); 2 resetFields() &#xff1b;清除form的全部校验状态 this.$refs.form.clearValidate(); 3&#xff0c;清除固定的字段的校验 const field supplierName; // 要清除校验的字段名 cons…

iostream、fstream、sstream、string、vector、unordered_map、stack

iostream 用于输入输出操作&#xff0c;包含了处理标准输入输出流的功能&#xff08;例如&#xff0c;cin, cout, cerr等&#xff09;。 #include <iostream>int main() {int number;std::cout << "Enter a number: ";std::cin >> number;std::…

像uniapp image标签一样对图片进行缩放和裁剪

像uniapp image标签一样对图片进行缩放和裁剪 0 前言提示1 实现1.1 不保持纵横比缩放图片&#xff0c;使图片的宽高完全拉伸至填满 image 元素1.2 保持纵横比缩放图片&#xff0c;使图片的长边能完全显示出来。也就是说&#xff0c;可以完整地将图片显示出来。1.3 保持纵横比缩…

【DevOps实战篇】使用Portainer启动WordPress CMS堆栈应用

【DevOps实战篇】使用Portainer启动WordPress CMS堆栈应用 目录 【DevOps实战篇】使用Portainer启动WordPress CMS堆栈应用使用 Portainer 安装 WordPress 的要求什么是 Portainer使用 Portainer 安装 WordPress 的理由步骤1: 如何为 WordPress 设置 Portainer步骤2: 如何访问 …

Amuse .NET application for stable diffusion

Amuse github地址&#xff1a;https://github.com/tianleiwu/Amuse .NET application for stable diffusion, Leveraging OnnxStack, Amuse seamlessly integrates many StableDiffusion capabilities all within the .NET eco-system Welcome to Amuse! Amuse is a profes…

uni-app 中两个系统各自显示不同的tabBar

最近在一个uni-app项目中遇到一个需求,在登录页面成功登录以后需要判断身份,不同的身份的进入不同的tabBar页面,但是在uni-app项目中pages.json中的tabBar的list数组只有一个&#xff0c;且不能写成动态的,那如何实现这个需求呢?答案是需要我们自定义tabBar。 目录 1、我们确…

vue+elementUI实现树形穿梭框

1.实现效果 2.整体思路 将左侧选中的节点移动到右侧&#xff0c;还要保持树结构&#xff0c;意味着移动子节点&#xff0c;需要把该子节点对应的父节点甚至父节点的父节点一并移到右侧形成一个新的树结构&#xff0c;树结构的层级和原来的树保持一致&#xff0c;只是右侧展示…

QML 绘制PieSeries(饼状图)

一.PieSeries(饼状图)介绍 在QML中绘制饼状图主要依赖于Qt提供的QtCharts模块。该模块包含了一系列用于绘制图表的类&#xff0c;其中PieSeries类专门用于创建饼状图。 以下是一些关于使用QtCharts在QML中绘制饼状图的介绍&#xff1a; PieSeries属性&#xff1a;PieSeries是绘…

Sora后时代文生视频的探索

一、写在前面 按常理&#xff0c;这里应该长篇大论地介绍一下Sora发布对各行业各方面产生的影响。不过&#xff0c;这类文章已经很多了&#xff0c;我们今天主要聊聊那些已经成熟的解决方案、那些已经可以“信手拈来”的成果&#xff0c;并以此为基础&#xff0c;看看Sora发布…

练习实践-TLS协议01-Wireshark对https数据的解密

参考来源&#xff1a; https://zhuanlan.zhihu.com/p/36669377 https://blog.csdn.net/u010726042/article/details/53408077 思路&#xff1a; wireshark抓到的https流量包经过了ssl加密&#xff0c;那么我们如何才能查看解密的数据呢&#xff1f;Firefox和Chrome浏览器都支…

ubuntu显卡驱动安装

最近电脑显示器频繁出现故障导致显卡驱动总是出问题&#xff0c;找到了一套简单、有效的显卡驱动安装方式&#xff0c;记录一下方便下次出问题时候用。 参考了以下文章&#xff1a; Ubuntu18-22.04安装和干净卸载nvidia显卡驱动——超详细、最简单 Ubuntu 安装显卡驱动 显卡驱…