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

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. 目录

  1. Spring Boot与MySQL的整合基础知识

  2. 配置Spring Boot的Maven依赖

  3. 配置MySQL数据库连接

  4. 使用JPA和Hibernate来管理实体类和数据库之间的映射

  5. 使用Spring Data JPA查询和操作数据库中的数据

  6. 测试用例

  7. 总结

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框架的快速开发框架&#xff0c;可以使开发者快速搭建一个可靠的Java Web应用程序。而MySQL是最广泛使用的关系型数据库系统之一&#xff0c;也是Spring Boot整合数据库的首选。本文将介绍Spring Boot如何整合MySQL数据库。 2. 摘要 本文…...

Vue3 + Vite 构建组件库发布到 npm

你有构建完组件库后&#xff0c;因为不知道如何发布到 npm 的烦恼吗&#xff1f;本教程手把手教你用 Vite 构建组件库发布到 npm 搭建项目 这里我们使用 Vite 初始化项目&#xff0c;执行命令&#xff1a; pnpm create vite my-vue-app --template vue这里以我的项目 vue3-xm…...

Vite多环境配置与打包:灵活高效的Vue开发工作流

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

从零实现诗词GPT大模型:数据集介绍和预处理

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗…...

45.HarmonyOS鸿蒙系统 App(ArkUI)创建列表(List)

列表是一种复杂的容器&#xff0c;当列表项达到一定数量&#xff0c;内容超过屏幕大小时&#xff0c;可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集&#xff0c;例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求&#xff08;如通讯录、音乐列…...

推荐算法之协同过滤

算法原理 透过百科&#xff0c;我们了解到协同过滤推荐&#xff08;Collaborative Filtering recommendation&#xff09;是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同&#xff0c;协同过滤算法结合用户行为分析用户…...

Kotlin 面试题

lifecycleScope.launchWhenResumed launchWhenResumed是一个扩展函数,它是LifecycleCoroutineScope的一部分,并且它是在Android的Lifecycle库中引入的。 这个函数的主要目的是在Lifecycle的对应组件(通常是Activity或Fragment)处于“resumed”状态时启动协程。 public fun …...

TCM(Tightly Coupled Memory)紧密耦合存储器简介

在ARM Cortex处理器中&#xff0c;TCM通常指的是紧密耦合存储器&#xff08;Tightly Coupled Memory&#xff09;。TCM是一种位于处理器核心旁边的高速存储器&#xff0c;它的设计目的是为了提供低延迟和高带宽的内存访问性能。 TCM的特点是它与处理器内核紧密耦合&#xff0c;…...

《自动机理论、语言和计算导论》阅读笔记:p172-p224

《自动机理论、语言和计算导论》学习第 8 天&#xff0c;p172-p224总结&#xff0c;总计 53 页。 一、技术总结 1.Context-Free Grammar(CFG) 2.parse tree (1)定义 p183&#xff0c;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连接一旦建立&#xff0c;只要连接双方不主动 close &#xff0c;连接就会一直保持。但建立连接的双方并不是一直都存在数据交互&#xff0c;所以在实际使用中会存在两种情况&#xff1a;一种是每次使用完&#xff0c;主动close&#xff0c;即短连接&…...

架构师系列-搜索引擎ElasticSearch(七)- 集群管理之分片

集群健康检查 Elasticsearch 的集群监控信息中包含了许多的统计数据&#xff0c;其中最为重要的一项就是集群健康&#xff0c;它在 status字段中展示为 green&#xff08;所有主分片和副本分片都正常&#xff09;、yellow&#xff08;所有数据可用&#xff0c;有些副本分片尚未…...

基于Spring Boot实现的图书个性化推荐系统

基于Spring Boot实现的图书个性化推荐系统 开发语言&#xff1a;Java语言 数据库&#xff1a;MySQL工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统实现 前台首页功能模块 学生注册 登录 图书信息 个人信息 管理员功能模块 学生管理界面图 图书分类管理界面图 图书信息管…...

安全加速SCDN带的态势感知能为网站安全带来哪些帮助

随着安全加速SCDN被越来越多的用户使用&#xff0c;很多用户都不知道安全加速SCDN的态势感知是用于做什么的&#xff0c;德迅云安全今天就带大家来了解下什么是态势感知&#xff0c;态势感知顾名思义就是对未发生的事件进行预知&#xff0c;并提前进行防范措施的布置&#xff0…...

java面向对象.day21(继承02--super)

说明 super父 this当前 使用super时&#xff0c;首先要继承父类&#xff0c;其次是在子类里面才能使用super。 继承父类后&#xff0c;运行子类时会同时调用父类的构造方法&#xff0c;如果要显性调用父类的构造方法必须在子类的第一行调用。 单使用super()表示调用父类构造…...

【数据结构】4.List的介绍

目录 1.什么是List 2.常见接口介绍 3.List的使用 1.什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。 Collection也是一个接口&#xff0c;该接口中规范了后序容器中常用的一些方法&#xff0c;具体如下&#xff1a; Iterable也是一个接口…...

acwing算法提高之图论--最近公共祖先

目录 1 介绍2 训练 1 介绍 本博客用来记录"对于有根图中&#xff0c;求最近公共祖先"的题目。 求解方法&#xff1a; 向上标记法。每次求两个结点的最近公共祖先的时间复杂度是O(N)。由于时间复杂度较高&#xff0c;通常不用。倍增法。 倍增法重要思路&#xff1…...

C语言 函数——断言与防御式编程

目录 如何确定假设的真假&#xff1f; 断言 防御式编程&#xff08;Defensive programming&#xff09; 如何确定假设的真假&#xff1f; 程序中的假设 *某个特定点的某个表达式的值一定为真 *某个特定点的某个表达式的值一定位于某个区间等 问题&#xff1a;如何确定这些…...

【opencv】示例-travelsalesman.cpp 使用模拟退火算法求解旅行商问题

// 载入 OpenCV 的核心头文件 #include <opencv2/core.hpp> // 载入 OpenCV 的图像处理头文件 #include <opencv2/imgproc.hpp> // 载入 OpenCV 的高层GUI(图形用户界面)头文件 #include <opencv2/highgui.hpp> // 载入 OpenCV 的机器学习模块头文件 #includ…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Ubuntu系统多网卡多相机IP设置方法

目录 1、硬件情况 2、如何设置网卡和相机IP 2.1 万兆网卡连接交换机&#xff0c;交换机再连相机 2.1.1 网卡设置 2.1.2 相机设置 2.3 万兆网卡直连相机 1、硬件情况 2个网卡n个相机 电脑系统信息&#xff0c;系统版本&#xff1a;Ubuntu22.04.5 LTS&#xff1b;内核版本…...

对象回调初步研究

_OBJECT_TYPE结构分析 在介绍什么是对象回调前&#xff0c;首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例&#xff0c;用_OBJECT_TYPE这个结构来解析它&#xff0c;0x80处就是今天要介绍的回调链表&#xff0c;但是先不着急&#xff0c;先把目光…...