当前位置: 首页 > 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…...

MoveIt 2 Launch文件进阶:如何用MoveItConfigsBuilder灵活切换规划器(OMPL vs. Pilz)

MoveIt 2规划器切换实战&#xff1a;用MoveItConfigsBuilder实现OMPL与Pilz工业规划器的动态选择 在工业机器人应用开发中&#xff0c;运动规划器的选择往往决定了任务执行的效率和质量。想象一下这样的场景&#xff1a;你的机械臂需要在杂乱环境中快速避障移动时&#xff0c;…...

Linux下RTL8188无线网卡变身AP热点:从驱动安装到自动分配IP全流程(附避坑指南)

Linux下RTL8188无线网卡配置AP热点全攻略&#xff1a;从驱动到自动IP分配的实战指南 在嵌入式开发和物联网应用中&#xff0c;将无线网卡配置为接入点&#xff08;AP&#xff09;是常见需求。RTL8188系列USB无线网卡因其高性价比和广泛兼容性&#xff0c;成为开发者的热门选择。…...

跨平台B站工具箱:BiliTools让你的视频下载体验焕然一新

跨平台B站工具箱&#xff1a;BiliTools让你的视频下载体验焕然一新 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/GitHub_Trending/bilit/Bil…...

解锁汽车ECU诊断新可能:ECUBus-Pro开源工具的全场景应用指南

解锁汽车ECU诊断新可能&#xff1a;ECUBus-Pro开源工具的全场景应用指南 【免费下载链接】ECUBus ECU bus tool, UDS over CAN, CAN-FD, Ethernet and so on. 项目地址: https://gitcode.com/gh_mirrors/ec/ECUBus ECUBus-Pro是一款功能强大的开源汽车ECU开发工具&#…...

最完整的大模型算法工程师技术栈图谱(2026版)

目录 一、基础能力&#xff08;所有AI工程师的底座&#xff09; 1 编程语言 2 数据结构与算法 3 数学基础 二、深度学习基础 深度学习模型基础 三、大模型核心技术 1 Transformer架构 2 预训练 3 Tokenizer 四、大模型训练体系 1 分布式训练 2 训练优化技术 3 微…...

ThinkPad装Win10企业版后,手把手教你用PowerShell搞定Lenovo Vantage(附依赖包下载)

ThinkPad安装Win10企业版后手动部署Lenovo Vantage的完整指南 当你在ThinkPad上安装了纯净的Windows 10企业版系统后&#xff0c;可能会发现无法通过常规方式安装Lenovo Vantage这款官方管理工具。本文将详细介绍如何通过PowerShell命令手动安装Lenovo Vantage及其所有必需的依…...

收藏!2026非科班/转行小白必看:3步切入AI大模型,月薪30w+实战路径

2026年的职场赛道&#xff0c;AI大模型依旧是绝对的“黄金风口”。 最新行业报告显示&#xff0c;AI相关岗位需求逆势增长37%&#xff0c;薪资领跑全行业&#xff0c;大厂校招起薪普遍突破25k。但一个残酷的现实是&#xff1a; 太多非科班、半路转行的程序员&#xff0c;还在门…...

保姆级教程:在Windows 11上用VSCode和Conda搞定Depth-Anything-3(含常见报错修复)

Windows 11深度估计实战&#xff1a;VSCodeConda环境下的Depth-Anything-3全流程指南 深度估计作为计算机视觉领域的重要技术&#xff0c;正在自动驾驶、增强现实等场景中发挥关键作用。本文将带你在Windows 11系统上&#xff0c;使用VSCode和Conda搭建Depth-Anything-3开发环境…...

终极指南:nanoGPT如何让每个人都能训练自己的AI语言模型?

终极指南&#xff1a;nanoGPT如何让每个人都能训练自己的AI语言模型&#xff1f; 【免费下载链接】nanoGPT The simplest, fastest repository for training/finetuning medium-sized GPTs. 项目地址: https://gitcode.com/GitHub_Trending/na/nanoGPT 想要训练自己的AI…...

LFM2.5-1.2B-Thinking-GGUF开源可部署:自主可控轻量模型替代方案深度评测

LFM2.5-1.2B-Thinking-GGUF开源可部署&#xff1a;自主可控轻量模型替代方案深度评测 1. 模型概述 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型&#xff0c;专为低资源环境优化设计。该模型采用GGUF格式存储&#xff0c;配合llama.cpp运行时&#xff0c;能…...