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应用程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/816425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最短路计数

最短路计数 提交数: 51, 通过率: 54.9%, 平均分: 65.49 题目描述: 给出一个N个顶点M条边的无向无权图&#xff0c;顶点编号为1~N。问从顶点1开始&#xff0c;到其他每个点的最短路有几条&#xff1f; 输入格式: 第一行包含2个正整数N, M, 分别为图的顶点数与边数。 接下来…

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

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

基于单片机的智能照明控制系统设计与实现

【摘要】为改善传统照明方式能源浪费的问题,实现对照明系统展开智能化的有效控制,高电能的利用率。本文介绍了一种STC12 系列单片机的智能照明控制系统,通过对控制系统的硬件设计及软件设计,在实现智能控制的基础上兼具节能设计,为照明智能控制系统的后续发展作出了充足准…

机器学习(31)PINN

文章目录 摘要Abstract一、监督学习二、文献阅读1. 题目2. abstract3. 偏微分方程的数据驱动解3.1连续时间模型example(Schrodinger equation)&#xff1a; 3.2离散时间模型Example (Allen–Cahn equation)&#xff1a; 4. 文献解读4.1 Introduction4.2 创新点 三、实验内容1.实…

车载电子电器架构 —— 电子电气架构开发总结和展望

车载电子电器架构 —— 电子电气架构开发总结和展望 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要…

【web网页制作】html+css旅游家乡山西主题网页制作(3页面)【附源码】

山西旅游网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、景点介绍Page2、酒店精选|出行攻略Page3、景色欣赏 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码4.1 主页模块源码4.2 源码获取方式 作者寄语 涉及知识 山西旅游主题网页制作&am…

为什么光伏探勘测绘需要无人机?

随着全球对可再生能源需求的不断增长&#xff0c;光伏产业也迎来了快速发展的机遇。光伏电站作为太阳能发电的主要形式之一&#xff0c;其建设前期的探勘测绘工作至关重要。在这一过程中&#xff0c;无人机技术的应用正逐渐展现出其独特的优势。那么&#xff0c;为什么光伏探勘…

Java调用http接口的几种方式(HttpURLConnection、OKHttp、HttpClient、RestTemplate)

Java作为后端语言是开发接口实现功能供客户端调用接口&#xff0c;这些客户端中最主要是本项目的前端&#xff1b;但有时候也需要Java请求其他的接口&#xff0c;比如需要长连接转短链接&#xff08;请求百度的一个接口可以实现&#xff09;、获取三方OSS签名、微信小程序签名、…

从零实现诗词GPT大模型:GPT是怎么生成内容的?

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 再开始编写GPT之前,我们得对GPT是怎么生成内容的有一个大致的了解。目前的神经网络我们大多都可以看成是一个黑盒,即我们把数据输送给网络后,网络给我我们输出,我们可以不用关心这个黑盒里到底是怎么实现…

IDEA 使用备忘录(不断更新)

IDEA 项目结构&#xff08;注意层级结构&#xff0c;新建相应结构时&#xff0c;按照以下顺序新建&#xff09;&#xff1a; project&#xff08;项目&#xff09; module&#xff08;模块&#xff09; package&#xff08;包&#xff09; class&#xff08;类&#xff09; 项…

公布应用程序

&#x1f4d5;作者简介&#xff1a; 过去日记&#xff0c;致力于Java、GoLang,Rust等多种编程语言&#xff0c;热爱技术&#xff0c;喜欢游戏的博主。 &#x1f4d8;相关专栏Rust初阶教程、go语言基础系列、spring教程等&#xff0c;大家有兴趣的可以看一看 &#x1f4d9;Jav…

【Vue】新手一步一步安装 vue 语言开发环境

文章目录 1、下载node.js安装包 1、下载node.js安装包 1.打开node.js的官网下载地址&#xff1a;http://nodejs.cn/download/ 选择适合自己系统的安装包&#xff1a;winds、mac 2. 配置node.js和npm环境变量 安装好之后&#xff0c;对npm安装的全局模块所在路径以及缓存所在路…

Spring Boot | Spring Boot中进行 “文件上传” 和 “文件下载”

目录: 一、SpringBoot中进行 " 文件上传" :1.编写 "文件上传" 的 “表单页面”2.在全局配置文件中添加文件上传的相关配置3.进行文件上传处理&#xff0c;实现 "文件上传" 功能4.效果测试 二、SpringBoot中进行 "文件下载" :“英文名称…

ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现

摘 要 通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分&#xff0c;Lucene是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net平台上用C#开发的&#xff0c;数据库是MSSQL Server 2000。主要完成的功能有&#xff1a;用爬虫抓取网页&#xff1b;获取有效…

NPU编译MultiScaleDeformableAttention

NPU对pytorch&#xff0c;想将检测模型在NPU上训练&#xff0c;存在编译MultiScaleDeformableAttention的需求。 然而&#xff0c;原dino模型https://github.com/IDEA-Research/DINO/tree/main/models/dino/ops/src 仅包含CPU版本和GPU版本&#xff1a; 是不是就真的无法解决…

传统图机器学习的特征工程-连接

概念及应用场景 通过已知连接补全未知连接 将link编码成为向量输入到机器学习模型中&#xff1a; 1.直接提取link的特征&#xff0c;构建D维向量 2.把link两段节点的D维向量拼在一起&#xff08;丢失了link本身的连接结构信息&#xff09; 应用&#xff1a; 1.客观静态图…

深度学习图像处理基础工具——opencv 实战信用卡数字识别

任务 信用卡数字识别 穿插之前学的知识点 形态学操作 模板匹配 等 总体流程与方法 1.有一个模板 2 用轮廓检测把模板中数字拿出来 外接矩形&#xff08;模板和输入图像的大小要一致 &#xff09;3 一系列预处理操作 问题的解决思路 1.分析准备&#xff1a;准备模板&#…

docker 安装 nginx + httpd + php-fpm

原文地址&#xff1a;http://www.taoluyuan.com/index.php/archives/30/#2 展示 1.安装 1.1安装docker 1.2安装nginx 1.3安装apache-httpd 1.4安装php-fpm 2.配置nginx反向代理 httpdphp-fmp 1.安装 1.1安装docker 移除旧的版本&#xff1a; sudo yum remove docker 安装…

Hive进阶Day05

一、HDFS分布式文件存储系统 1-1 HDFS的存储机制 按块&#xff08;block&#xff09;存储 hdfs在对文件数据进行存储时&#xff0c;默认是按照128M(包含)大小进行文件数据拆分&#xff0c;将不同拆分的块数据存储在不同datanode服务器上 拆分后的块数据会被分别存储在不同的服…

Linux 文件的操作命令 移动 复制 删除

cp 复制文件 cp [选项] 源文件或目录 目标文件或目录-r 或 -R&#xff1a;用于复制目录及其内容。-i&#xff1a;在覆盖目标文件之前提示用户确认。-u&#xff1a;当源文件比目标文件新或源文件的目标文件不存在时&#xff0c;才复制源文件。-v&#xff1a;显示详细的复制过程…