当前位置: 首页 > news >正文

Spring Boot 动态表操作服务实现

Spring Boot 动态表操作服务实现

  • Spring Boot 动态表操作服务实现
    • 1. 环境配置
    • 2. `JdbcTemplate` 的使用
      • 2.1 创建动态表
      • 2.2 动态添加字段
      • 2.3 动态删除字段
      • 2.4 动态修改字段类型
      • 2.5 删除表的方法实现
    • 3. 小结
      • 3.1 可能的优化


Spring Boot 动态表操作服务实现

在现代的应用开发中,尤其是在数据库设计不断变化的情况下,动态操作数据库表格成为了不可或缺的一部分。传统的数据库设计和表结构的修改往往需要重建整个数据库或者在数据库管理工具中手动执行脚本,这对开发和维护工作带来了极大的麻烦。为了提高效率,我们可以通过程序化的方式实现动态的数据库表管理,Spring Boot 提供了一个优秀的支持工具——JdbcTemplate,可以帮助我们进行表的创建、修改以及删除等操作。

在本篇文章中,我们将以一个典型的动态表操作服务为例,详细介绍如何在 Spring Boot 中使用 JdbcTemplate 实现动态表管理。我们会实现以下几个功能:

  • 动态创建表
  • 动态添加字段
  • 动态删除字段
  • 动态修改字段类型

1. 环境配置

首先,确保你已经在 Spring Boot 项目中配置好了数据库连接。通常,我们需要在 application.propertiesapplication.yml 文件中进行配置,示例:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.platform=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect

在这个配置中,你需要根据实际的数据库配置修改数据库的连接信息。

2. JdbcTemplate 的使用

Spring 提供的 JdbcTemplate 类是用于数据库操作的一个高级封装,它简化了数据库操作的流程。通常,我们可以通过 JdbcTemplate 来执行 SQL 查询、更新、删除等操作。

在接下来的代码示例中,我们将通过 JdbcTemplate 实现四个主要功能:动态创建表、动态添加字段、动态删除字段、动态修改字段类型。

2.1 创建动态表

为了能够动态创建表,我们需要定义一个方法 createTable,它接受一个表名作为参数,构造一个包含固定字段的 SQL 创建表语句并执行:

public String createTable(String tableName) {// 初始化的表结构String createTableSql = "CREATE TABLE IF NOT EXISTS `" + tableName + "` ("+ "`id` varchar(50) COLLATE utf8mb4_general_ci NOT NULL, "+ "`create_id` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, "+ "`create_time` datetime DEFAULT NULL, "+ "`update_id` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL, "+ "`update_time` datetime DEFAULT NULL, "+ "PRIMARY KEY (`id`)"+ ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;";try {jdbcTemplate.execute(createTableSql);return "Table created successfully";} catch (Exception e) {e.printStackTrace();return "Error creating table: " + e.getMessage();}
}

在这个方法中,CREATE TABLE 语句使用了 IF NOT EXISTS 来保证只有在表不存在时才会创建,避免重复创建表。

2.2 动态添加字段

当表的结构发生变化时,我们可能需要动态添加字段。这时候可以使用 ALTER TABLE SQL 语句。以下是 addColumn 方法的实现,它接受表名、字段名和字段类型作为参数:

public String addColumn(String tableName, String columnName, String columnType) {// 拼接 ALTER TABLE 语句String alterTableSql = "ALTER TABLE " + tableName + " ADD COLUMN " + columnName + " " + columnType;try {// 执行 SQL 语句jdbcTemplate.execute(alterTableSql);return "Column added successfully";} catch (Exception e) {e.printStackTrace();return "Error adding column: " + e.getMessage();}
}

ALTER TABLE 语句在这里的作用是修改表结构,添加一个新的字段。

2.3 动态删除字段

有时候我们需要删除表中的某个字段,这时同样可以使用 ALTER TABLE 语句来删除字段。dropColumn 方法如下:

public String dropColumn(String tableName, String columnName) {// 拼接 ALTER TABLE 语句String alterTableSql = "ALTER TABLE " + tableName + " DROP COLUMN " + columnName;try {// 执行 SQL 语句jdbcTemplate.execute(alterTableSql);return "Column dropped successfully";} catch (Exception e) {e.printStackTrace();return "Error dropping column: " + e.getMessage();}
}

在此方法中,DROP COLUMN 语句会删除指定的字段。删除字段时需要小心,因为这可能会导致数据丢失。

2.4 动态修改字段类型

有时我们需要修改字段的数据类型,这也是通过 ALTER TABLE 实现的。以下是修改字段类型的方法:

public String modifyColumnType(String tableName, String columnName, String newColumnType) {// 拼接 ALTER TABLE 语句String alterTableSql = "ALTER TABLE " + tableName + " MODIFY COLUMN " + columnName + " " + newColumnType;try {// 执行 SQL 语句jdbcTemplate.execute(alterTableSql);return "Column type modified successfully";} catch (Exception e) {e.printStackTrace();return "Error modifying column type: " + e.getMessage();}
}

在这个方法中,MODIFY COLUMN 用于修改表中现有字段的数据类型。

要实现删除表的方法,可以通过 DROP TABLE SQL 语句来删除数据库中的表。以下是删除表的方法实现:

2.5 删除表的方法实现

public String dropTable(String tableName) {// 拼接 DROP TABLE 语句String dropTableSql = "DROP TABLE IF EXISTS " + tableName;try {// 执行 SQL 语句jdbcTemplate.execute(dropTableSql);return "Table dropped successfully";} catch (Exception e) {e.printStackTrace();return "Error dropping table: " + e.getMessage();}
}
  1. DROP TABLE IF EXISTS:该 SQL 语句会检查表是否存在,如果存在则删除它。IF EXISTS 子句防止在表不存在时抛出异常。

  2. 异常处理:在执行删除操作时,我们将操作放在 try-catch 块中,以确保即使删除失败,也能捕获并输出错误信息。

  3. 调用 jdbcTemplate.execute():通过 JdbcTemplate 执行 SQL 语句。在 DROP TABLE 语句执行成功后,我们返回成功消息,若出现异常则捕获并返回错误消息。

3. 小结

通过上面的代码,我们实现了四个常见的动态表操作功能:动态创建表、动态添加字段、动态删除字段、动态修改字段类型。通过 JdbcTemplate 这类高效的工具,数据库操作变得更加简洁和方便,尤其在数据库表结构频繁变化的应用场景中,能够有效提高开发效率。

这些操作虽然简洁,但在使用时仍需谨慎,特别是字段删除和修改字段类型的操作,需要确认对数据库中的数据没有影响。

3.1 可能的优化

  • 表字段验证: 在执行 ALTER TABLE 操作之前,可以先查询当前表的结构,避免重复添加相同的字段。
  • 事务控制: 对于多个操作,可以考虑加入事务控制,以确保操作的原子性。
  • 错误处理: 在实际生产环境中,应该加强错误日志记录和异常处理,确保操作出错时可以追踪和恢复。

希望这篇文章能帮助你更好地理解如何在 Spring Boot 中实现动态数据库表操作,并提高你的开发效率!

相关文章:

Spring Boot 动态表操作服务实现

Spring Boot 动态表操作服务实现 Spring Boot 动态表操作服务实现1. 环境配置2. JdbcTemplate 的使用2.1 创建动态表2.2 动态添加字段2.3 动态删除字段2.4 动态修改字段类型2.5 删除表的方法实现 3. 小结3.1 可能的优化 Spring Boot 动态表操作服务实现 在现代的应用开发中&am…...

62_Redis服务器集群优化

Redis集群虽然具备高可用特性,且能实现自动故障恢复,但是如果使用不当,也会存在一些问题,总结如下。 集群完整性问题集群带宽问题数据倾斜问题客户端性能问题命令的集群兼容性问题Lua和事务问题1.集群完整性问题 在 Redis 集群的默认配置下,当节点检测到存在至少一个哈希…...

晨辉面试抽签和评分管理系统之九:随机编排考生的分组(以教师资格考试面试为例)

晨辉面试抽签和评分管理系统(下载地址:www.chenhuisoft.cn)是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…...

Linux Top 命令 load average 指标解读

前言 作为平台开发的同学,维护平台稳定性是我们最基本的工作职责,下面主要介绍下top 命令里 ,load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载,它表示运…...

Nacos: 一个动态服务发现与配置管理平台

Nacos: 一个动态服务发现与配置管理平台 引言 在微服务架构日益普及的今天,服务之间的调用和配置管理变得越来越复杂。为了简化这一过程并提高开发效率,阿里巴巴推出了Nacos——一个易于使用的动态服务发现、配置管理和服务管理平台。 Nacos是什么&am…...

SpringBoot + 事务钩子函数

一、案例背景 拿支付系统相关的业务来举例。在支付系统中,我们需要记录每个账户的资金流水(记录用户A因为哪个操作扣了钱,因为哪个操作加了钱),这样我们才能对每个账户的账做到心中有数,对于支付系统而言&…...

OpenCV相机标定与3D重建(56)估计物体姿态(即旋转和平移)的函数solvePnPRansac()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用RANSAC方案从3D-2D点对应关系中找到物体的姿态。 cv::solvePnPRansac 是 OpenCV 中用于估计物体姿态(即旋转和平移)的…...

【JVM中的三色标记法是什么?】

JVM中的三色标记法是什么? 一、基本概念二、标记过程三、优势与问题四、漏标与多标的解决方案三色标记法(Tri-color Marking Algorithm)是Java虚拟机(JVM)中一种用于追踪对象存活状态的垃圾回收算法。 它基于William D. Hana和Mark S. McCulleghan在1976年提出的两色标记法…...

从0开始学习搭网站第二天

前言:今天比较惭愧,中午打铲吃了一把,看着也到钻二了,干脆顺手把这个赛季的大师上了,于是乎一直到网上才开始工作,同样,今天的学习内容大多来自mdn社区mdn 目录 怎么把文件上传到web服务器采用S…...

43.Textbox的数据绑定 C#例子 WPF例子

固定最简步骤,包括 XAML: 题头里引入命名空间 标题下面引入类 box和block绑定属性 C#: 通知的类,及对应固定的任务 引入字段 引入属性 属性双触发,其中一个更新block的属性 block>指向box的属性 从Textbo…...

钉钉实现第三方登录示例(重复回调问题解析)

钉钉作为专门为企业打造的沟通协助平台,包含的功能很多,考勤打卡,审批,日记,钉盘,钉邮等。基本满足了一些中小企业的大部分工作需求。因此对接钉钉的一些功能模块业务需求在开发中也是比较常见的。钉钉的开…...

Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、安装Element-UI 四、代码实现 4.1、添加一个点 4.2、删除所有点 4.3、根据经纬度删除点 4.4、给点添加点击事件 4.5、完整代码 五、Gitee源码 一、案例截图 可以新增/删除标记点,点击标记点可以获取到当前标…...

算法妙妙屋-------2..回溯的奇妙律动

回溯算法是一种用于系统性地搜索和解决问题的算法,它以深度优先搜索(DFS)为基础,用来探索所有可能的解决方案。通过递归地尝试候选解并在必要时回退(即“回溯”),它能够高效地解决许多涉及组合、…...

pytest-instafail:让测试失败信息即时反馈

pytest-instafail:让测试失败信息即时反馈 前言一、简介二、优势三、安装与使用3.1 未安装时运行情况3.2 安装3.3 已安装时运行情况3.3 pytest.ini 配置选项 四、对比 总结 前言 当测试用例数量庞大时,定位测试失败的原因往往耗时费力。此时,…...

K8S--配置存活、就绪和启动探针

目录 1 本人基础环境2 目的3 存活、就绪和启动探针介绍3.1 存活探针3.2 就绪探针3.3 启动探针 4 探针使用场景4.1 存活探针4.2 就绪探针4.3 启动探针 5 配置存活、就绪和启动探针5.1 定义存活探针5.2 定义一个存活态 HTTP 请求接口5.3 定义 TCP 的就绪探针、存活探测5.4 定义 g…...

solidity基础 -- 枚举

在智能合约开发领域,Solidity语言因其简洁高效而被广泛使用。其中,枚举(enum)作为一种特殊的数据类型,为合约的状态管理提供了极大的便利。本文将通过一个具体的Solidity合约示例,深入探讨枚举的定义、使用…...

重回C语言之老兵重装上阵(六)枚举

1. 什么是枚举 (enum)? 枚举(enum)是 C 语言中的一种数据类型,用于定义一组具名的整数常量。它可以使代码更加可读,帮助程序员更容易理解程序中的常量值。通过枚举,程序员可以使用有意义的名称来代替数字&…...

python+playwright自动化测试(一):安装及简单使用,截图录屏

目录 基本使用 浏览器调用 启用浏览器 创建窗口对象 访问URL 页面的刷新、返回、前进 关闭 截图、录屏、保存pdf 截图 录屏 保存为pdf 设置窗口大小 调试模式 手机模式及new_context的更多参数 手机模式 new_context的其他参数 设置语言和时区 设置和修改位置…...

Mysql--架构篇--体系结构(连接层,SQL层,存储引擎层,文件存储层)

MySQL是一种广泛使用的关系型数据库管理系统(RDBMS),其体系结构设计旨在提供高效的数据存储、查询处理和事务管理。MySQL的体系结构可以分为多个层次,每个层次负责不同的功能模块。 MySQL的体系结构主要由以下几个部分组成&#…...

git merge 压缩提交

在 Git 中,执行 git merge 时可以通过一些操作来“压缩”提交,通常是指将合并过程中的多个提交压缩成一个单一的提交。这可以通过使用 --squash 选项来完成,或者在合并后进行交互式 rebase。以下是两种常见的方法: 方法 1&#x…...

Python脚本自动发送电子邮件

要编写一个Python脚本来自动发送电子邮件,你可以使用smtplib库来处理SMTP协议,以及email库来构建邮件内容。 安装必要的库 通常情况下,smtplib和email库是Python标准库的一部分,因此不需要额外安装。如果你使用的是较旧的Python版…...

uniapp中rpx和upx的区别

在 UniApp 中,rpx 和 upx 是两种不同的单位,它们的主要区别在于适用的场景和计算方式。 ### rpx(Responsive Pixel) - **适用场景**:rpx 是一种响应式单位,主要用于小程序和移动端的布局。 - **计算方式**…...

CentOS 9 Stream 中查看 Python 版本并升级 Python

CentOS 9 Stream 中查看 Python 版本并升级 Python 1. 查看当前 Python 版本2. 升级 Python 版本(1)安装开发工具(2)安装必要的依赖包(3)下载和安装新版本的 Python(4)验证安装 3. …...

可以用于分割字符串的方法(python)

一、str.split(sep,maxsplit)函数(返回列表) sep:分隔符 maxsplit:分割次数 a"Hello world" list1a.split(" ",1) print(list1) 结果: [Hello, world] 二、str.rsplit(sep,maxsplit)函数&…...

【Vue】全局/局部组件使用流程(Vue2为例)

全局组件和局部组件区别 如何使用 全局组件:全局注册后,可以在任意页面中直接使用。局部组件:在页面中需要先导入子组件路径,注册组件才能使用。 适用场景 全局组件:适用于高频使用的组件,如导航栏、业…...

virtual box虚拟机误删Python3.6后导致UBUNTU18.04开机无UI界面(进不了desktop)的解决方法

最近在解决一个python引起的问题的时候,作者心一狠,删了系统自带的python3.6, 顺便还删了python3。导致重启后ubuntu的virtual box虚拟机无法看到UI登录界面,只给我了孤零零的命令行。装了很多东西不可能重装,无奈只能…...

虚拟线程JDK与Spring Core Reactor

两种虚拟线程对比:JDK vs. Spring Core Reactor性能对比 1、基于 JDK 的虚拟线程实现: 摘自实际代码: public static void withFlatMapUsingJDK() { ... var virtualThreadExecutor Executors.newThreadPerTaskExecutor( Thread .ofVirtual…...

纯 Python、Django、FastAPI、Flask、Pyramid、Jupyter、dbt 解析和差异分析

一、纯 Python 1.1 基础概念 Python 是一种高级、通用、解释型的编程语言,以其简洁易读的语法和丰富的标准库而闻名。“纯 Python” 在这里指的是不依赖特定的 Web 框架或数据分析工具,仅使用 Python 原生的功能和标准库来开发应用程序或执行任务。 1.…...

C++ NULL和nullptr

NULL实际是一个宏,在传统的C头文件(stddef.h)中,可以看到如下代码: #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif 如上是条件编译的宏定义 确保在不同编程环境下正确处理NULL的定义 C中NULL可能被定义…...

算法日记1:洛谷p2678跳石头(二分答案)

1、题目 二、题解: 2.1解题思路: 1.题目要求求出最小值最大,明显的二分答案题目,所以我们可以二分可以跳跃距离int l-1,rL1; 2.此时我们思考lmid和rmid的处理,当我们的check(mid)为true时候 表明我们此时的mid是符合要求的, 那么…...

PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析

PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析 目录 PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析1. 引言2. PID控制器的基本概念2.1 PID控制器的定义2.2 PID控制器的核心思想2.3 PID控制器的应用领域 3. PID控…...

Vue中nextTick实现原理

源码实现思路(面试高分回答) 面试官问我 Vue 的 nextTick 原理是怎么实现的,我这样回答: 在调用 this.$nextTick(cb) 之前: 存在一个 callbacks 数组,用于存放所有的 cb 回调函数。存在一个 flushCallbac…...

【MATLAB】subplot如何增加title

在 Matlab 中,使用 subplot 函数将图形窗口划分为多个子图,并使用 title 函数为每个子图添加标题。以下是一个示例: matlab % 生成示例数据 x 0:0.1:10; y1 sin(x); y2 cos(x); % 创建一个 2 行 1 列的子图布局,并选…...

vue3+ts的<img :src=““ >写法

vue3ts的<img :src"" >写法<img :src"datasetImage" alt"数据分布示意图" /><script setup lang"ts">const datasetImage ref();datasetImage.value new URL(../../../assets/images/login-background.jpg, impo…...

Vue+Echarts+百度地图 实现 路径规划

实现功能: 通过选择 相关调拨&#xff0c;系统自动规划 路径&#xff0c;并且以地图的形式呈现最佳路径 技术难点: 1. vue 结合使用 echarts 2.echarts 在 vue嵌入百度地图&#xff0c;并且做出路径 曲线 最终结果:...

uniapp 小程序 textarea 层级穿透,聚焦光标位置错误怎么办?

前言 在开发微信小程序时&#xff0c;使用 textarea 组件可能会遇到一些棘手的问题。最近我在使用 uniapp 开发微信小程序时&#xff0c;就遇到了两个非常令人头疼的问题&#xff1a; 层级穿透&#xff1a;由于 textarea 是原生组件&#xff0c;任何元素都无法遮盖住它。当其…...

IGP协议的双点双向注入(路由引入)

一、拓扑环境 二、单向注入 以上拓扑为例&#xff0c;单点注入存在路由回包问题 在AR5上注入直连路由 55.5.5.5 需求&#xff1a;AR1上的10.1.1.1 需访问AR5上的55.5.5.5 1、在AR2和AR3上查看注入的55.5.5.5的路由信息 2、现在边界设备以学习到目的网段的路由信息&#xff0…...

【React】新建React项目

目录 create-react-app基础运用React核心依赖React 核心思想&#xff1a;数据驱动React 采用 MVC体系package.jsonindex.html好书推荐 官方提供了快速构建React 项目的脚手架&#xff1a; create-react-app &#xff0c;目前使用它安装默认是19版本&#xff0c;我们这里降为18…...

“AI 自动化效能评估系统:开启企业高效发展新征程

在当今数字化飞速发展的时代&#xff0c;企业面临着日益激烈的市场竞争&#xff0c;如何提升效率、降低成本成为了企业生存与发展的关键。AI 自动化效能评估系统应运而生&#xff0c;它如同一把智能钥匙&#xff0c;为企业开启了高效发展的新征程。 AI 自动化效能评估系统&…...

免 root 开启 Pixel 手机 VoLTE 功能

部分运营商需要开启 VoLTE 功能才可以正常通话和接收短信&#xff0c;但是默认情况下&#xff0c;Pixel 是无法开启的&#xff0c;需要我们手动开启一下。经过网友的确认&#xff0c;这种方法还适用于荣耀 MAGIC 等其他品牌的手机。 具体流程如下&#xff1a; 1.打开开发者选…...

华为2024嵌入式研发面试题

01 你认为最好的排序算法是什么&#xff1f; 在实际的编程中&#xff0c;最好的排序算法要根据实际需求和数据规模来选择&#xff0c;因为每种排序算法都有其优势和劣势。以下是一些常见排序算法及其优缺点&#xff1a; 冒泡排序 冒泡排序是一种简单直观的排序算法&#xff0…...

Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法

报错信息&#xff1a; android.database.sqlite.SQLiteException: too many SQL variables (code 1 SQLITE_ERROR): while compiling: SELECT * FROM points WHERE id IN (?,?,?,...,?,?,?)SQLiteException: too many SQL variables 通常是由于一次查询或插入的 SQL 语句…...

PHP 字符串

PHP 字符串 引言 在 PHP 中&#xff0c;字符串是一种非常基础且重要的数据类型。字符串可以包含字母、数字、标点符号以及特殊字符。PHP 提供了丰富的字符串函数&#xff0c;使得字符串操作变得简单而高效。本文将详细介绍 PHP 中字符串的常用操作&#xff0c;包括字符串的创…...

Android15源码编译问题处理

最近想在Raspberry Pi5上面运行自己编译的Android15镜像,参考如下链接来处理: GitHub - raspberry-vanilla/android_local_manifest GitHub - raspberry-vanilla/android_kernel_manifest 代码同步完后,编译就出问题了,总是提示: FAILED: analyzing Android.bp files and…...

Transformer架构和Transformers 库和Hugging Face

Transformer架构 和 Hugging Face 之间的关系非常紧密&#xff0c;Hugging Face 是推动 Transformer 架构普及和应用的重要力量。以下是两者的关系及其具体联系&#xff1a; 1. Transformer 架构 背景: Transformer 是由 Google 在 2017 年提出的革命性架构&#xff0c;基于自…...

【机器学习 | 数据挖掘】离群点检测

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…...

【极速版 -- 大模型入门到进阶】除了 Prompting, 大模型还能如何被应用?

文章目录 大模型应用 -- Generative AI Projects&#x1f30a; 大模型应用的时效优势&#x1f30a; 大模型应用的方式 - Technology Options应用方式一 &#x1f41f; Prompting&#xff1a;最简单快速应用方式二&#x1f41f; Retrieval augmented generation (RAG)&#xff1…...

[Unity]发包前遇到的坑之GridLayoutGroup

发包前禁用了UI上面一个调试页面A后&#xff0c;发现无法正确获取某一个用了GridLayoutGroup组件的所有子物体的世界坐标。 一顿研究之后发现&#xff0c;在Start的时候想要正确获取其坐标&#xff0c;需要强制刷新一次布局&#xff0c;方法如下&#xff1a; UnityEngine.U…...

【C++】IO 流

文章目录 &#x1f449;C 语言的输入与输出&#x1f448;&#x1f449;流是什么&#x1f448;&#x1f449;C IO 流&#x1f448;C 标准 IO 流C 和 C 语言的输入格式问题C 的多次输入内置类型和自定义类型的转换日期的多次输入C 文件 IO 流文本文件和二进制文件的读写 &#x1…...

Public Key Retrieval is not allowed 解决方法

如图&#xff1a;我的报错是Public Key Retrieval is not allowed&#xff0c;我的前后端都能正常加载&#xff0c;但是在请求数据库时就会报错如下&#xff1a; 解决办法&#xff1a; 在 application.yaml 中的数据库设置地方加上allowPublicKeyRetrievaltrue&#xff0c;然后…...