spring boot项目:实现与数据库的连接
步骤
- 【写在前面】
- 定义数据库连接信息:
- 引入数据库驱动:
- 创建数据源:
- 创建JdbcTemplate:
- 编写DAO层:
- 使用@Service注解标注Service层:
- 使用@RestController注解标注Controller层:
- 示例代码:
- application.properties文件中定义数据库连接信息:
- pom.xml文件中添加MySQL驱动依赖:
- 创建数据源:
- 创建JdbcTemplate:
- 编写DAO层:
- 使用@Service注解标注Service层:
- 使用@RestController注解标注Controller层:
【写在前面】
spring boot框架的Java项目的优点:
- 快速开发:Spring Boot提供了一系列的开箱即用的功能和特性,使得开发人员可以快速构建和部署应用程序。
- 简化配置:Spring Boot自动配置了许多常见的配置,如数据源、Web服务器、安全等等,这样开发人员可以专注于业务逻辑的实现,而不是配置。
- 易于部署:Spring Boot可以将应用程序打包成可执行的JAR或WAR文件,这样可以方便地部署到任何支持Java的平台上。
- 易于测试:Spring Boot提供了一系列的测试工具和框架,可以方便地进行单元测试、集成测试和端到端测试。
- 高度可扩展:Spring Boot是基于Spring框架构建的,因此可以利用Spring框架的各种扩展和插件来扩展应用程序的功能。
- 易于维护:Spring Boot提供了一系列的监控和管理工具,可以方便地监控和管理应用程序的状态和性能。
- 生态丰富:Spring Boot拥有庞大的社区和生态系统,有许多第三方库和插件可以与其集成,为开发人员提供了更多的选择和灵活性。
一个spring boot框架的Java项目要实现与数据库的连接,需要以下步骤:
定义数据库连接信息:
在application.properties或application.yml文件中定义数据库连接信息,包括数据库URL、用户名、密码等。
引入数据库驱动:
在pom.xml文件中添加相应的数据库驱动依赖,例如MySQL、Oracle等。
创建数据源:
在配置类中创建数据源,可以使用Spring Boot提供的自动配置或手动配置。
创建JdbcTemplate:
使用JdbcTemplate类来执行SQL语句,JdbcTemplate是Spring框架提供的一个简化数据库操作的工具类。
编写DAO层:
在DAO层中定义数据库操作的接口和实现类,使用JdbcTemplate来执行SQL语句。
使用@Service注解标注Service层:
在Service层中调用DAO层的方法,实现业务逻辑。
使用@RestController注解标注Controller层:
在Controller层中调用Service层的方法,处理请求和响应。
示例代码:
application.properties文件中定义数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
pom.xml文件中添加MySQL驱动依赖:
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version>
</dependency>
创建数据源:
@Configuration
public class DataSourceConfig {@Bean@Primary@ConfigurationProperties(prefix = "spring.datasource")public DataSource dataSource() {return DataSourceBuilder.create().build();}
}
创建JdbcTemplate:
@Configuration
public class JdbcConfig {@Beanpublic JdbcTemplate jdbcTemplate(DataSource dataSource) {return new JdbcTemplate(dataSource);}
}
编写DAO层:
@Repository
public class UserDaoImpl implements UserDao {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic User getUserById(int id) {String sql = "select * from user where id=?";User user = jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class));return user;}
}
使用@Service注解标注Service层:
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Overridepublic User getUserById(int id) {return userDao.getUserById(id);}
}
使用@RestController注解标注Controller层:
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/{id}")public User getUserById(@PathVariable int id) {return userService.getUserById(id);}
}
相关文章:
文件名的后缀
需要注意的是,在Linux和macOS系统上,文件名可以以.开头,表示这是一个隐藏文件,像.gitignore这样的文件名,.后面并不是后缀名,这个文件没有后缀名或者说后缀名为。...
结构化查询语言(SQL)的作用
结构化查询语言(SQL)的作用 结构化查询语言(SQL)是一种专门用来管理关系型数据库的语言。它具有以下重要作用: 1. 数据库管理 SQL被广泛应用于数据库管理,包括创建数据库、表和视图,定义数据…...
VScode 里面使用 python 去直接调用 CUDA
上一个 帖子主要分享了如何 去将 C 程序 打包成一个package。 我们最后的 目的实际上是想把 CUDA 的程序 打包成 一个 Package , C 程序只是起到了桥梁的作用: 首先:CUDA 程序 和 C 的程序一样, 都有一个 .cu 的源文件和 一个 .…...
【spark】spark使用sql读取elasticsearch es索引,使用keystore配置用户密码
参考文章 spark配置elasticsearch属性汇总(基于es7) es-offical-doc Spark多方案读取Es性能比较 Spark读写ES数据时遇到的问题总结 es 查询多个索引的文档 spark table中使用明文密码 set es.index.auto.createtrue drop table if exists default.test_es01; create table d…...
R语言银行信用数据SOM神经网络聚类实现可视化
原文链接:http://tecdat.cn/?p=3231 原文出处:拓端数据部落公众号当今社会,“信用”越来越多的人们关注个人或企业,有望获得最高的信用评分,以享受更多的信贷额度,更优惠的利率。 那么我们如何评分信用,并使我们的客户可视化? 自组织地图( SOM )是一种无监督的数据可…...
HCIP-Datacom-ARST必选题库_IPsec【3道题】
1.在IPsec中,能够用哪一个协议来实现数据的完整性? AES 3DES MD5 DES 2.以下关于IPsec密钥交换的描述,正确的是哪一项? IKE主模式支持NAT转换 IKE协商使用Bellham-Ford算法分发密钥 使用IKE协议主模式需要经历三个阶段:SA交换、密钥交换和ID交…...
spring boot项目:实现与数据库的连接
步骤【写在前面】定义数据库连接信息:引入数据库驱动:创建数据源:创建JdbcTemplate:编写DAO层:使用Service注解标注Service层:使用RestController注解标注Controller层:示例代码:app…...
解析vue中的process.env
一、介绍 1、process process是 nodejs 下的一个全局变量,它存储着 nodejs 中进程有关的信息。 2、process.env env 是 environment 的简称,process.env属性返回一个包含用户环境的对象。 3、dotenv Dotenv 是一个零依赖的模块,它能将环境变…...
ESP32 开启 Wi-Fi 热点与手机端 Iperf 测试 APP 来测试 ESP32 Wi-Fi AP 速率的流程
# 测试需求: ESP32 开启 WiFi AP Server 模式手机连接 ESP32 WiFi AP 热点通过手机端 Iperf 测试 APP 测试 ESP32 WiFi 热点的 Iperf 速率 测试用例: 可以基于 “esp-idf/examples/wifi/iperf” 例程进行测试。ESP32 设备下载 Iperf 例程后࿰…...
msfconsole之制作windows木马并成功获取shell
msfconsole之制作windows木马并成功获取shell 一、工具简介 msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所…...
【小杨带你玩转C语言】(入门篇)初识C语言(下)
本章目录 每篇前言1.导语 2.目标 3.知识点 一,常见关键字 1,认识关键字 2,关键字分类 2.1,数据类型关键字 2.1.1,基本数据类型关键字 2.…...
一文快速回顾 Java 操作数据库的方式-JDBC
前言 数据库的重要性不言而喻,不管是什么系统,什么应用软件,也不管它们是 Windows 上的应用程序,还是 Web 应用程序,存储(持久化)和查询(检索)数据都是核心的功能。 大…...
92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
当下,是一个“向钱看,向厚赚”的社会。快节奏的生活下,家庭、工作各方面压力很容易使年轻人陷入迷茫和焦虑。 与其他行业相比,程序员的高薪让人羡慕。那么,对于那些真正达到这么多收入的人来说,他们是怎么…...
太敢说了,编程如果这么自学,培训班都得倒闭,直接省去上万元的学费
写了20多年的代码,之前做过阿里的高级架构师,在技术这条路上跌跌撞撞了很多,我今天分享一些我个人的自学方法给各位。现在在网上报个正经点的班得花几千块钱,线下就更夸张,都是万元起步,我的这些学习方法如果你能用好&…...
别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”
文心一言发布十余天后,争论仍未有止歇的迹象。 有人给出了“拉垮”的评价,相比于多轮迭代的ChatGPT,文心一言在逻辑推理、多轮对话等方面的表现不尽如人意;也有人认为给文心一言值得肯定,原因是填补了中文互联网的空白…...
异常:Error和Exception
异常机制(Exception) 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,…...
Python满屏表白代码
目录 前言 爱心界面 无限弹窗 前言 人生苦短,我用Python!又是新的一周啦,本期博主给大家带来了一个全新的作品:满屏表白代码,无限弹窗版!快快收藏起来送给她吧~ 爱心界面 def Heart(): roottk.Tk…...
Unity --- Transform类
1.一个很有意思的事实是Transform类不仅用来管理游戏物体的位置缩放旋转,还用来管理游戏物体的父物体与子物体之间的关系 当游戏物体A的trasnform类a是游戏物体B的transform类b的父类的话,游戏物体A就是游戏物体B的父物体 2.如何访问脚本当前挂载的游戏…...
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
Bug描述 今天主要解决一个 Bug:libstdc.so.6: version GLIBCXX_3.4.29 not found 主要是和 libstc版本问题相关,找了很多方法,其他很多方法都是直接修改libstc.so的版本,但是直接修改这种可能被多个共享库依赖的库版本将会牵一发…...
Unity IL2CPP 游戏分析入门
一、目标 很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。 但是要是搞明白了他的玩法,VB Decompiler一上,那妥妥的就是源码。 U…...
设置鼠标右键打开方式,添加IDEA的打开方式
一、问题描述 已下载IDEA,但是右键打开之前保存的项目文件,无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell (我找了半天没看到Class…...
手机(Android)刷NetHunter安装指南,无需ssh执行kali命令, NetHunter支持的无线网卡列表!
一、安装NetHunter 前提:确保手机已经root,已装上magisk。如果没有root,可用尝试magisk root 后执行此文 1、下载Nethunter:Get Kali | Kali Linux 然后push 到sdcard 里, 2、打开magisk,选择刚刚下好的…...
Maven和Eclipse联合开发
Maven和Eclipse联合开发 java list 对象个数 size java List 取第一个对象.get(0) baseCrmSpecialclient.get(0).getFxid() System.out.print 换行 System.out.print(item.getCode()"\r\n"); java for循环用法 https://blog.csdn.net/rank/list/total Java for-ea…...
宝塔面板部署node+vue项目注意事项
宝塔面板部署nodevue项目注意事项 宝塔连接云服务器 如果服务器上没有安装宝塔面板,需要先安装,安装流程如下: 从宝塔官网主页进去,点击下载安装,然后点击在线安装 输入服务器IP和密码在服务器上安装宝塔面板 等待一…...
MATLAB | R2023a更新了哪些好玩的东西
R2023a来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!把绘图放最前面叭,有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦!! x -10:0.25:10; y x.^…...
MySQL对表操作
目录 CRUD 增加(Create) 查询(Retrieve) 全列查询 指定列查询 查询字段为表达式 别名 去重:DISTINCT 排序:ORDER BY 条件查询:WHERE 逻辑运算符: 修改(Update) 删除&…...
Downie 4 4.6.12 MAC上最好的一款视频下载工具
Downie for Mac 简介 Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的站点&…...
使用Android高性能音频--OpenSL ES和AAudio
AAudio的概念介绍: AAudio 是作为 OpenSL ES 库的轻量级原生 Android 替代项而开发。 与 OpenSL ES 相比,AAudio API 不仅较小,而且容易使用。 AAudio 是在 Android O 版本中引入的全新 Android C API。 因此 API 是专为需要低延迟的高性能音频应用而设…...
eNSP 构建基本WLAN
配置项配置参数AP组 名称:hcia-group 应用模板:域管理模板hcia-domain、VAP模板hcia-vap 域管理模板 名称:hcia-domain 国家码:cn SSID模板 名称:hcia-ssid SSID名称:hcia-wlan 安全模板 名称:h…...
记录一次C#/.NET以及VB p-code/native的逆向破解
记录一次C#/.NET以及VB p-code/native的逆向破解 玩了5份样本,2份dotnet的,2份native的和1份pcode的。 dotnet framework程序 dotnet的相对会简单,只需要使用dnspy工具打开目标程序,找到逻辑点后,点编辑函数࿰…...
IO-操作系统
用户态和内核态 现代操作系统,为了保护系统的安全,都会划分出内核空间和用户空间,或者我们经常说的内核态和用户态。简单来说,就是划分为内核态和用户态两个等级,运行在用户态的进程大都是一些应用程序,能够…...
Elasticsearch基本查询语法
先造点数据 基于elasticsearch7.10.0 POST /hotel {"mappings":{"properties":{"title":{"type":"text"},"city":{"type":"keyword"},"price":{"type":"double&q…...
百度地图入门
百度地图官网百度api 进入官网选择javascript API 里面有详细的教程, 跟着教程先登录注册一个个人开发账号 并创建一个应用获取ak 创建时js需要填白名单,如果是在本地运行填写localhost就好了 当你在控制台看到这个界面是代表创建成功了,…...
Endor Labs:2023年十大开源安全风险
近日,Endor Labs发布了一份新报告,确定了2023年的十大开源安全风险。报告显示,许多软件公司依赖于开源软件代码,但在如何衡量和处理与开源软件相关的风险和漏洞方面缺乏一致性。调查发现,在应用程序中超过80%的代码可能…...
linux 产生随机数 并遍历
1、产生随机数 varRANDOMvarRANDOM varRANDOMvar[ $var % 150 ] 2、产生不重复的随机数 $ entries($(shuf -i 0-149 -n 15)) $ echo “${entries[]}” 3、对随机数排序 $ entries($(shuf -i 0-149 -n 15 | sort -n)) $ echo “entries[]"12224549546678798393118119124140…...
OAuth2协议
OAuth2协议流程图协议角色和流程授权所需信息授权方式授权码模式(authorization code)参数简化模式密码模式客户端模式授权方式小结流程图 协议角色和流程 user-agent:浏览器或者手机App平台 资源所有者(resourc owner࿰…...
Kafka在Mac下的安装与使用
mac 安装kafka安装kafka的原因安装kafka启动Zookeeper启动Kafka创建topic查看topic生产数据消费数据关闭zookeeper关闭kafka测试安装kafka的原因 用户微服务登录后需要向广告微服务中发送用户登录的信息以获取用户画像(这个过程是异步的),故…...
Linux之sshd_config配置文件说明及实践
一、sshd_config文件说明 sshd_config 是 OpenSSH SSH 服务器守护进程配置文件,主要用于设置ssh server服务的相关参数,包括监听地址、监听端口、允许验证次数、是否允许root账户登录等等。sshd服务从/etc/ssh/sshd_config(或命令行中用-f指定…...
如何将pdf大小压缩?怎么缩小pdf的文件大小?
PDF文件常常会因为内容的多样和丰富而导致文件过大,这个时候我们可以选择将pdf压缩大小,这样即使你的电脑中有大量PDF文档也不怕占用太多内存啦,今天分享给大家的是使用pdf在线压缩工具进行pdf压缩(https://www.yasuotu.com/pdfya…...
WuThreat身份安全云-TVD每日漏洞情报-2023-03-28
漏洞名称:ABB RCCMD 硬编码密码漏洞 漏洞级别:严重 漏洞编号:CVE-2022-4126 相关涉及:RCCMD: 4.40之前230207 漏洞状态:未定义 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07407 漏洞名称:SOFTNEXT 垃圾邮件 SQR 代码注入 漏洞级别:高危 漏洞编号:CVE-2…...
在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?
大家都知道在芯片设计行业,项目是至关重要的一环。从项目的初期到交付,不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目,从初期到交付的过程是比较漫长的。我们知道最早的时候&#…...
给你一个购物车模块,你会如何设计测试用例?【测试用例设计】
测试购物车 从使用场景上,把自己想象成一个使用购物车的人,模拟流程,可以主要从两个方面进行考虑: 涉及操作:增(添加商品)删(删除商品)改(编辑、跳转商品&a…...
centos7配置pytorch和tensorflow
1、安装anaconda 1.1镜像源下载对应anaconda版本后传到服务器上 1.2进入对应文件夹 首先赋权再执行安装程序 chmod x Anaconda3-2022.10-Linux-x86_64.sh ./Anaconda3-2022.10-Linux-x86_64.sh chmod x Anaconda3-2022.10-Linux-x86_64.sh 1.3交互确认 确认许可协议&…...
libmemunreachable+malloc debug分析内存泄露
使用lsan遇到困难 一般使用lsan来查memleak效率最高,不过针对cameraserver hook到asan库时有一些其他的报错。 而且报错看起来还不太好解决: 看下如何针对camerasever使能lsan,后续研究。 使用libmemunreachablemallocdebug分析 原理 相关…...
关于Error和Exception的一些思考 小结
目录 1. ERROR 2. Exception 2.1 checked Exception 2.2 unchecked Exception 2.3 区别 3. 内存溢出 3.1 堆溢出 3.2 永久代/元空间溢出 3.3 方法栈溢出 Java中,所有的异常都有一个共同的父类:Throwable类。 Throwable类有两个重要的子类&#…...
Docker学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...
@RefreshScope 和 @Scope的使用及源码解析
结论: Scope 1、Scope代表spring Bean对象的作用域,一般分为singleton、prototype、request、session、application。其中request、session、application的缓存在GenericWebApplicationContext.postProcessBeanFactory方法中创建 2、Scope的注解proxy…...
element ui通过formdata上传文件
ElementUI的upload组件手动上传,formdata表单数据 Excerpt 使用场景:选取好excel文件后,再把导入的excel文件和参数同时提交给服务器,需要用到文件的手动上传,但是直接拷贝官网的demo会出现问题,下面会具体…...
关于微信小程序安装npm的过程,从下载到小程序内部安装完成
1.先从官网下载nodejs 网站为Node.js (nodejs.org),选择左边第一个2 然后一直next,选默认就行 选择自己喜欢的路径我的是D:\nodejs-v18.12.1 3 下载完成后,先在安装文件夹中新建两个文件夹 node_cache node_global 4 配置一下环境变量&…...
【游戏开发环境】Unity使用Mac电脑开发,开发环境的搭建(Mac mini M1 VSCode Git 好用工具)
文章目录 一、前言二、Unity下载安装三、VSCode 1、VSCode下载安装2、VSCode插件 2.1、unity3d-pack插件2.2、Bracket Pair Colorizer 2插件2.3、其他插件 3、代码无法提示与补全的问题 3.1、Windows解决办法3.2、Mac解决办法 3.2.1、安装Mono3.2.2、设置Omnisharp: Use Global…...
原神 Android 教程 —安卓版
准备材料 一台能读写 /system 分区的 Android 手机(或:一台安装了 Magisk 的 Android 手机) 有人搞出来免root端了,此条件不再必须私服客户端...
Windows安装配置tidevice
一直以来,iOS自动化的实现和执行都依赖Mac系统,其主要原因是因为需要通过Xcodebuild编译安装WDA (WebDriverAgent)到iOS设备中,通过WDA实现对被测应用进行操作。而Windows系统无法运行Xcode工具,所以无法运行iOS自动化测试&#x…...
关于Spring 的IoC和AOP的面试题,快看看你都能答上来哪些
推荐:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。。 点击跳转到网站 🏡 博客首页:派 大 星 ⛳️ 欢迎关注 ❤️ 点赞 🎒 收藏 ✏️ 留言 …...
Python Module — OpenAI ChatGPT API
目录 文章目录目录OpenAI Python SDKopenai.ChatCompletion 模块openai.ChatCompletion.create 函数OpenAI Python SDK 官方文档:https://platform.openai.com/docs/api-reference/introduction OpenAI Python SDK 用于开发与 OpenAI RESTful API 进行交互的客户端…...
Linux 0.11
调试介绍 Linux 0.11-调试 Linux 最早期的代码-36 启动跟踪 BIOS 加载 电脑启动,CPU指向0xFFFFFFF0处,这里正好是系统ROM BIOS存放的地址。即开始执行BIOS指令。为了保持向下兼容,就会把与原PC兼容的BIOS代码和数据复制到低端1M末端的64K…...
Elasticsearch 需要了解的都在这
ES选主过程?其实ES的选主过程其实没有很高深的算法加持,启动过程中对接点的ID进行排序,取ID最大节点作为Master节点,那么如果选出来的主节点中存储的元信息不是最新的怎么办?其实他是分了2个步骤做这件事,先…...
力扣118. 杨辉三角
Problem: 118. 杨辉三角 文章目录 题目描述思路复杂度Code 题目描述 思路 1.初始化状态:将创建的二维数组dp的第一列和主对角线上元素设为1; 2.状态的转移:从第一行、列起始,dp[i][j] dp[i - 1][j - 1] dp[i - 1][j] 复杂度 时…...
Ubuntu搭建Python虚拟环境:virtualenv
1 缘起 一阶段:Python开发,使用Windows环境,使用的相关依赖在Windows环境都能使用; 进入二阶段,开发了一个新功能,使用了k8s,Python依赖为:easy_k8s, 刚好,e…...
SQL UNION
在SQL中,UNION 是一个用于合并两个或多个 SELECT 语句结果集的操作符。使用 UNION 时,结果集会去重,只包含唯一的行。如果保留重复的行,可以使用 UNION ALL。 以下是 UNION 的一些关键点: 1. 去重:UNION 默…...
IP地址 0.0.0.0 和 127.0.0.1之间的区别
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
Hive主要介绍
Hive介绍 hive是基于 Hadoop平台操作 HDFS 文件的插件工具 可以将结构化的数据文件映射为一张数据库表 可以将 HQL 语句转换为 MapReduce 程序 1.hive 是由驱动器组成,驱动器主要由4个组件组成(解析器、编译器、优化器、执行器) 2.hive本身不…...
tiktok中的视频怎么无水印下载
在当今数字化时代,TikTok已经成为了年轻人们展示自我的舞台,无数有趣、创意的视频在这个平台上涌现。许多人想要下载TikTok上的视频时常面临一个难题:水印。水印是指视频上方显示的TikTok标志,它在一定程度上限制了用户下载视频并…...