Spring Boot(06):Spring Boot与MySQL搭配,打造极简高效的数据管理系统
1. 前言
Spring Boot 是一个基于Spring框架的快速开发框架,可以使开发者快速搭建一个可靠的Java Web应用程序。而MySQL是最广泛使用的关系型数据库系统之一,也是Spring Boot整合数据库的首选。本文将介绍Spring Boot如何整合MySQL数据库。
2. 摘要
本文将通过使用Spring Boot和MySQL数据库来创建一个简单的Java Web应用程序。首先,我们将介绍如何配置Spring Boot,然后我们将使用JPA(Java Persistence API)和Hibernate来管理实体类对象和数据库之间的映射。最后,我们将使用Spring Data JPA来查询和操作数据库中的数据。
3. 目录
-
Spring Boot与MySQL的整合基础知识
-
配置Spring Boot的Maven依赖
-
配置MySQL数据库连接
-
使用JPA和Hibernate来管理实体类和数据库之间的映射
-
使用Spring Data JPA查询和操作数据库中的数据
-
测试用例
-
总结
4. 正文
4.1 Spring Boot与MySQL的整合基础知识
Spring Boot是一个基于Spring框架的快速开发框架,可以使开发者快速搭建一个可靠的Java Web应用程序。Spring Boot提供了很多开箱即用的功能,例如自动配置、优雅的错误处理、嵌入式Web服务器、安全性、监控等。
MySQL是最广泛使用的关系型数据库系统之一,也是Spring Boot整合数据库的首选。MySQL支持多种数据类型、主从复制、分区等特性。除此之外,MySQL也提供了很多优秀的支持工具,例如MySQL Workbench、MySQL Connector/J等。
4.2 配置Spring Boot的Maven依赖
在开始之前,我们需要在Maven项目中添加Spring Boot和MySQL的依赖。在pom.xml文件中添加以下依赖:
<dependencies><!-- Spring Boot依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- MySQL依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!-- Spring Data JPA依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
</dependencies>
4.3 配置MySQL数据库连接
在配置MySQL数据库连接之前,我们需要在本地安装MySQL数据库。安装完成之后,我们需要创建数据库和用户。
在MySQL中创建数据库:
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
在MySQL中创建用户:
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
为用户赋予对数据库的权限:
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%';
现在我们已经准备好了MySQL数据库,下一步是在Spring Boot中配置MySQL数据库连接。
在application.properties文件中添加以下配置:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf-8
spring.datasource.username=myuser
spring.datasource.password=mypassword
4.4 使用JPA和Hibernate来管理实体类和数据库之间的映射
接下来,我们要使用JPA和Hibernate来管理实体类和数据库之间的映射。JPA是一个Java持久化规范,Hibernate是一个实现JPA规范的ORM框架,可以将Java中的对象映射到数据库中的表。
在src/main/java目录下创建一个名为com.example.demo的包,并创建一个名为User的实体类:
@Entity
@Table(name = "user")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;private String name;private String email;// getter和setter方法省略
}
在实体类上使用@Entity注解标注实体类,使用@Table注解对应数据库表名,在属性上使用@Id注解标识主键,使用@GeneratedValue注解指定主键值的生成策略。
接下来,我们需要创建一个名为UserRepository的Repository接口来操作数据库。使用Spring Data JPA可以大大简化我们的开发工作。在src/main/java目录下创建一个名为com.example.demo.repository的包,并创建一个名为UserRepository的接口:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
可以看到,这个接口继承了JpaRepository接口,该接口已经实现了基本的CRUD操作,我们不需要再手写这些操作的方法。
4.5 使用Spring Data JPA查询和操作数据库中的数据
现在我们已经创建了User实体类和UserRepository接口,下一步是使用Spring Data JPA查询和操作数据库中的数据。
在src/main/java目录下创建一个名为com.example.demo.controller的包,并创建一个名为UserController的Controller类:
@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserRepository userRepository;@GetMapping("")public List<User> getUsers() {return userRepository.findAll();}@PostMapping("")public User createUser(@RequestBody User user) {return userRepository.save(user);}
}
在UserController类上使用@RestController注解标识该类为控制器类,使用@RequestMapping注解来指定映射路径。
在getUser()方法中,我们使用userRepository.findAll()方法查询数据库中的所有用户,并返回一个用户列表。
在createUser()方法中,我们使用@RequestBody注解将请求体中的JSON数据映射到User对象中,并使用userRepository.save(user)方法将User对象保存到数据库中,并返回保存后的User对象。
4.6 测试用例
我们使用Postman来测试我们的应用程序。
发送GET请求并获取所有用户:
URL:http://localhost:8080/users
Method:GET
发送POST请求并创建一个新用户:
URL:http://localhost:8080/users
Method:POST
Body:{"name": "Tom","email": "tom@example.com"
}
5. 总结
本文介绍了如何使用Spring Boot和MySQL来创建一个简单的Java Web应用程序。我们使用了JPA和Hibernate来管理实体类和数据库之间的映射,并使用了Spring Data JPA来查询和操作数据库中的数据。同时,我们也编写了测试用例来测试我们的应用程序。
在本文中,我们学习了如何配置MySQL数据库连接、创建实体类、创建Repository接口、使用Spring Data JPA来操作数据库中的数据,以及如何编写测试用例。通过本文的介绍,相信读者已经了解了Spring Boot和MySQL的整合,并可以用它来快速搭建自己的Java Web应用程序。
相关文章:
Spring Boot(06):Spring Boot与MySQL搭配,打造极简高效的数据管理系统
1. 前言 Spring Boot 是一个基于Spring框架的快速开发框架,可以使开发者快速搭建一个可靠的Java Web应用程序。而MySQL是最广泛使用的关系型数据库系统之一,也是Spring Boot整合数据库的首选。本文将介绍Spring Boot如何整合MySQL数据库。 2. 摘要 本文…...
Vue3 + Vite 构建组件库发布到 npm
你有构建完组件库后,因为不知道如何发布到 npm 的烦恼吗?本教程手把手教你用 Vite 构建组件库发布到 npm 搭建项目 这里我们使用 Vite 初始化项目,执行命令: pnpm create vite my-vue-app --template vue这里以我的项目 vue3-xm…...
Vite多环境配置与打包:灵活高效的Vue开发工作流
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
从零实现诗词GPT大模型:数据集介绍和预处理
专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集,并且编写预处理代码,处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry,是一个在github上开源的中文诗…...
45.HarmonyOS鸿蒙系统 App(ArkUI)创建列表(List)
列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列…...
推荐算法之协同过滤
算法原理 透过百科,我们了解到协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤算法结合用户行为分析用户…...
Kotlin 面试题
lifecycleScope.launchWhenResumed launchWhenResumed是一个扩展函数,它是LifecycleCoroutineScope的一部分,并且它是在Android的Lifecycle库中引入的。 这个函数的主要目的是在Lifecycle的对应组件(通常是Activity或Fragment)处于“resumed”状态时启动协程。 public fun …...
TCM(Tightly Coupled Memory)紧密耦合存储器简介
在ARM Cortex处理器中,TCM通常指的是紧密耦合存储器(Tightly Coupled Memory)。TCM是一种位于处理器核心旁边的高速存储器,它的设计目的是为了提供低延迟和高带宽的内存访问性能。 TCM的特点是它与处理器内核紧密耦合,…...
《自动机理论、语言和计算导论》阅读笔记:p172-p224
《自动机理论、语言和计算导论》学习第 8 天,p172-p224总结,总计 53 页。 一、技术总结 1.Context-Free Grammar(CFG) 2.parse tree (1)定义 p183,But perhaps more importantly, the tree, known as a “parse tree”, when used in a …...
typescript playwright 笔记
录制调式 命令 npx playwright codegen url npx playwright codegen https://www.baidu.com/typescript 中 format 和 split 的使用 import * as util from util;const str1 hellow %s; const format util.format; const str2 format(str1, word);// 提取taskId const str3…...
从零实现诗词GPT大模型:了解Transformer架构
专栏规划: https://qibin.blog.csdn.net/article/details/137728228 这篇文档我们开始对GPT的核心组件Transformer进行一个详细的讲解, 加急编写中…...
温故知新之-TCP Keepalive机制及长短连接
[学习记录] 前言 TCP连接一旦建立,只要连接双方不主动 close ,连接就会一直保持。但建立连接的双方并不是一直都存在数据交互,所以在实际使用中会存在两种情况:一种是每次使用完,主动close,即短连接&…...
架构师系列-搜索引擎ElasticSearch(七)- 集群管理之分片
集群健康检查 Elasticsearch 的集群监控信息中包含了许多的统计数据,其中最为重要的一项就是集群健康,它在 status字段中展示为 green(所有主分片和副本分片都正常)、yellow(所有数据可用,有些副本分片尚未…...
基于Spring Boot实现的图书个性化推荐系统
基于Spring Boot实现的图书个性化推荐系统 开发语言:Java语言 数据库:MySQL工具:IDEA/Ecilpse、Navicat、Maven 系统实现 前台首页功能模块 学生注册 登录 图书信息 个人信息 管理员功能模块 学生管理界面图 图书分类管理界面图 图书信息管…...
安全加速SCDN带的态势感知能为网站安全带来哪些帮助
随着安全加速SCDN被越来越多的用户使用,很多用户都不知道安全加速SCDN的态势感知是用于做什么的,德迅云安全今天就带大家来了解下什么是态势感知,态势感知顾名思义就是对未发生的事件进行预知,并提前进行防范措施的布置࿰…...
java面向对象.day21(继承02--super)
说明 super父 this当前 使用super时,首先要继承父类,其次是在子类里面才能使用super。 继承父类后,运行子类时会同时调用父类的构造方法,如果要显性调用父类的构造方法必须在子类的第一行调用。 单使用super()表示调用父类构造…...
【数据结构】4.List的介绍
目录 1.什么是List 2.常见接口介绍 3.List的使用 1.什么是List 在集合框架中,List是一个接口,继承自Collection。 Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下: Iterable也是一个接口…...
acwing算法提高之图论--最近公共祖先
目录 1 介绍2 训练 1 介绍 本博客用来记录"对于有根图中,求最近公共祖先"的题目。 求解方法: 向上标记法。每次求两个结点的最近公共祖先的时间复杂度是O(N)。由于时间复杂度较高,通常不用。倍增法。 倍增法重要思路࿱…...
C语言 函数——断言与防御式编程
目录 如何确定假设的真假? 断言 防御式编程(Defensive programming) 如何确定假设的真假? 程序中的假设 *某个特定点的某个表达式的值一定为真 *某个特定点的某个表达式的值一定位于某个区间等 问题:如何确定这些…...
【opencv】示例-travelsalesman.cpp 使用模拟退火算法求解旅行商问题
// 载入 OpenCV 的核心头文件 #include <opencv2/core.hpp> // 载入 OpenCV 的图像处理头文件 #include <opencv2/imgproc.hpp> // 载入 OpenCV 的高层GUI(图形用户界面)头文件 #include <opencv2/highgui.hpp> // 载入 OpenCV 的机器学习模块头文件 #includ…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
