基于SpringBoot后端实现连接MySQL数据库并存贮数据

news/2024/5/11 1:43:46

目录

一、什么是MySQL数据库

二、基于SpringBoot框架连接MySQL数据库

 1、首先添加MySQL依赖:

2、配置数据库连接:

 3、创建实体类:

4、创建Repository接口:

5、使用Repository:

三、编写业务SQL语句

1、使用Spring Data JPA的方法命名约定:

2、用@Query注解:你可以在Repository接口的方法上使用@Query注解来编写自定义的SQL查询。

3、使用EntityManager:你可以通过注入EntityManager对象来执行原生的SQL查询。

四、常见SQL语句使用(附学习网站)

基本的SQL语句示例,包括查询、插入、更新和删除。

1、查询数据(SELECT):

2、插入数据(INSERT):

4、更新数据(UPDATE):

5、删除数据(DELshi

使用案列(登陆注册):

密码加密:

五、总结 


博主介绍:✌专注于前后端领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!

🍅文末三连哦🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

一、什么是MySQL数据库

MySQL是一种流行的关系型数据库管理系统(RDBMS),它是开源的,由瑞典公司MySQL AB开发。现在MySQL是Oracle公司的一部分,但MySQL仍然作为开源项目继续开发和维护。

MySQL数据库具有以下特点:

1. 关系型数据库管理系统(RDBMS):MySQL是一种关系型数据库,数据以表格的形式存储,这些表格可以通过关系进行连接。

2. 开源和免费:MySQL是开源的,意味着你可以免费使用它,而且有一个庞大的开源社区支持。

3. 跨平台性:MySQL支持多种操作系统,包括Linux、Windows、macOS等,可以在各种环境中部署和运行。

4. 高性能:MySQL是一种高性能的数据库管理系统,能够处理大量的数据和并发请求。

5. 可扩展性:MySQL支持主从复制、分片等技术,可以实现数据库的水平和垂直扩展。

6. 丰富的功能:MySQL提供了许多功能,包括事务支持、索引、触发器、存储过程、视图等,使得它适用于各种不同的应用场景。

7.MySQL应用:于Web应用程序、企业应用、移动应用等各种场景,是最受欢迎的数据库管理系统之一。

二、基于SpringBoot框架连接MySQL数据库

 1、首先添加MySQL依赖

pom.xml文件中添加MySQL连接器依赖。

<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version> <!-- 根据需要选择版本 -->
</dependency>

2、配置数据库连接

application.propertiesapplication.yml文件中配置MySQL数据库连接信息。 

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

或者在application.yml中: 

spring:datasource:url: jdbc:mysql://localhost:3306/your_database_nameusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driver

 3、创建实体类

创建与数据库表对应的实体类,并使用JPA注解进行标记。

import javax.persistence.Entity;
import javax.persistence.Id;@Entity
public class User {@Idprivate Long id;private String username;private String email;// Getters and setters
}

4、创建Repository接口

创建一个继承自Spring Data JPA的Repository接口。这将允许你执行数据库操作。 

import org.springframework.data.jpa.repository.JpaRepository;public interface UserRepository extends JpaRepository<User, Long> {
}

5、使用Repository

在你的服务类或控制器中注入UserRepository,以便进行数据库操作。 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserRepository userRepository;public List<User> getAllUsers() {return userRepository.findAll();}// 其他方法,如保存用户,删除用户等
}

三、编写业务SQL语句

在使用Spring Boot时,你可以使用多种方式编写SQL语句,包括:

1、使用Spring Data JPA的方法命名约定

Spring Data JPA允许你通过在Repository接口中定义方法名来自动生成SQL查询。例如,如果你的实体类是User,你可以在UserRepository接口中定义如下方法来查询用户:

public interface UserRepository extends JpaRepository<User, Long> {List<User> findByUsername(String username);
}

在这个例子中,Spring Data JPA会根据方法名自动生成查询语句,用于根据用户名查询用户。

2、用@Query注解:你可以在Repository接口的方法上使用@Query注解来编写自定义的SQL查询。

例如:

public interface UserRepository extends JpaRepository<User, Long> {@Query("SELECT u FROM User u WHERE u.username = :username")List<User> findByUsername(@Param("username") String username);
}

3、使用EntityManager:你可以通过注入EntityManager对象来执行原生的SQL查询。

例如:

import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;@Service
public class UserService {@Autowiredprivate EntityManager entityManager;public List<User> findUsersByUsername(String username) {Query query = entityManager.createNativeQuery("SELECT * FROM user WHERE username = ?", User.class);query.setParameter(1, username);return query.getResultList();}
}

在这个例子中,我们使用EntityManager对象执行了原生的SQL查询,然后将结果映射为User实体类的列表。

四、常见SQL语句使用(附学习网站)

基本的SQL语句示例,包括查询、插入、更新和删除。

1、查询数据(SELECT)

-- 查询表中所有数据
SELECT * FROM table_name;-- 查询特定列数据
SELECT column1, column2 FROM table_name;-- 查询满足条件的数据
SELECT * FROM table_name WHERE condition;-- 查询并排序
SELECT * FROM table_name ORDER BY column_name;-- 查询并限制结果数量
SELECT * FROM table_name LIMIT 10;

2、插入数据(INSERT)

-- 插入单行数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2);-- 插入多行数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);

4、更新数据(UPDATE)

-- 更新表中所有数据
UPDATE table_name SET column1 = new_value1, column2 = new_value2;-- 更新满足条件的数据
UPDATE table_name SET column1 = new_value1 WHERE condition;

5、删除数据(DELshi

-- 删除表中所有数据
DELETE FROM table_name;-- 删除满足条件的数据
DELETE FROM table_name WHERE condition;

使用案列(登陆注册):

创建用户表

CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL,email VARCHAR(100) NOT NULL,password VARCHAR(100) NOT NULL
);

用户注册(插入新用户)

INSERT INTO users (username, email, password) VALUES ('user1', 'user1@example.com', 'hashed_password');

其中,hashed_password是经过加密处理的密码,可以使用加密算法(如bcrypt)对密码进行加密,然后再存储到数据库中。

用户登录(验证用户名和密码)

SELECT * FROM users WHERE username = 'user1' AND password = 'hashed_password';

查询将返回匹配给定用户名和密码的用户信息。请注意,实际情况中应该对密码进行加密,然后再进行比较,以增加安全性。

密码加密

在实际应用中,密码通常应该加密存储,以防止数据库泄露导致密码被泄露。这里假设使用bcrypt算法进行密码加密。在Java中,可以使用BCryptPasswordEncoder等库进行加密,例如:

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;String password = "user_password";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);//然后将hashedPassword插入到数据库中。

五、总结 

使用Spring Boot操作MySQL数据库的总结如下:

  1. 简化开发:Spring Boot提供了简洁的配置和自动化的工作流程,使得在Spring应用中集成MySQL变得非常容易。它通过自动配置和约定优于配置的原则,大大简化了开发人员的工作。

  2. 强大的生态系统:Spring Boot构建在Spring框架之上,具有庞大而活跃的社区支持和丰富的生态系统。这意味着你可以轻松地找到解决问题的文档、教程和第三方库。

  3. 快速开发和部署:Spring Boot提供了内置的Web服务器(如Tomcat、Jetty),因此你可以直接打包应用程序并运行,无需部署到外部容器。这加快了开发和部署的速度。

  4. 集成Spring Data JPA:Spring Boot集成了Spring Data JPA,这是一个强大的数据访问框架,可以极大地简化与数据库的交互。使用Spring Data JPA,你可以通过定义Repository接口和方法来执行各种数据库操作,而无需编写复杂的SQL语句。

  5. 自动配置数据库连接:Spring Boot提供了自动配置数据库连接的功能,只需在配置文件中提供数据库相关信息,Spring Boot就能自动创建数据源并连接到数据库。

  6. 灵活的配置选项:虽然Spring Boot提供了自动配置,但你仍然可以根据需要进行自定义配置。它提供了丰富的配置选项,允许你灵活地调整应用程序的行为。

优点:

  • 快速启动:Spring Boot应用程序可以快速启动,并且具有较低的内存消耗,适合于微服务架构和云部署。
  • 简化配置:Spring Boot的自动配置功能简化了配置过程,减少了开发人员的工作量。
  • 丰富的生态系统:Spring Boot基于Spring框架,拥有丰富的生态系统和活跃的社区支持。
  • 集成Spring Data JPA:Spring Boot集成了Spring Data JPA,简化了与数据库的交互和持久化操作。

缺点:

  • 隐藏细节:虽然Spring Boot简化了开发过程,但有时它会隐藏一些细节,导致开发人员对底层工作原理的理解不足。
  • 学习曲线:尽管Spring Boot简化了配置和开发流程,但初学者可能需要花一些时间来学习Spring Boot的核心概念和最佳实践。
  • 依赖冲突:由于Spring Boot自动配置了许多依赖项,可能会导致依赖冲突或版本不兼容的问题,需要谨慎管理依赖项。

http://www.mrgr.cn/p/62635340

相关文章

微服务高级篇(三):分布式缓存+Redis集群

文章目录 一、单点Redis的问题及解决方案二、Redis持久化2.1 单机安装Redis2.2 RDB持久化2.3 AOF持久化2.4 RDB和AOF对比 三、Redis主从3.1 搭建Redis主从架构3.1.1 集群结构3.1.2 准备实例和配置3.1.3 启动3.1.4 开启主从关系3.1.5 测试 3.2 数据同步3.2.1 全量同步【建立连接…

FreeType Glyph Conventions 翻译(4) ——Kerning 字间距调整

原文地址 https://freetype.org/freetype2/docs/glyphs/glyphs-4.html 目录字间距调整对子 Kerning pairs应用字间距调整 Applying kerning The term kerning refers to specific information used to adjust the relative positions of successive glyphs in a string of text…

MHA高可用+VIP漂移

目录一、环境搭建1、关闭防火墙firewalld,selinux2、每台主机安装MySQL二、基于GTID的主从复制1、修改/etc/my.cnf文件2、检查GTID状态3、配置主从复制4、从库设置三、部署MHA1、准备环境(所有节点)2、部署管理节点(可以部署在任何机器上)3、配置ssh信任4、启动测试(mana…

iOS客户端自动化UI自动化airtest+appium从0到1搭建macos+脚本设计demo演示+全网最全最详细保姆级有步骤有图

Android客户端自动化UI自动化airtest从0到1搭建macos脚本设计demo演示全网最全最详细保姆级有步骤有图-CSDN博客 避坑系列-必读&#xff1a; 不要安装iOS-Tagent &#xff0c;安装appium -这2个性质其实是差不多的都是为了安装wda。注意安装appium最新版本&#xff0c;安装完…

计算机复试面试问答准备(未完)

目录 1、理解多态性2、怎么逆置⼀个链表3、顺序表和链表的区别4、树的存储结构5、什么是哈夫曼树&#xff1f;简述哈夫曼树的构造过程。介绍哈夫曼树的特性。6、哈夫曼编码的编码和解码过程7、图的遍历方式8、图的存储方式9、最小生成树10、迪杰斯特拉算法11、佛洛依德算法12、…

逆向中常见的加密算法

逆向中常见的加密算法 1.Base64 1) 原理与特征: ​ a.原理:将3个byte(即38=24bit)切割为46,然后根据6bit表示的数字在base64表(64byte的表)寻找对应的值;如果待加密字符串长度不为3的整数,则在末尾处补0对齐,其中0对应的字符为=。 ​ b.特征:在反汇编代码中会出现0x…

Flutter逆向

环境配置(Blutter)及使用 参考 [原创]flutter逆向 ACTF native app-Android安全-看雪-安全社区|安全招聘|kanxue.com 其中在编译过程中遇到 -- Configuring done (2.5s) -- Generating done (0.0s) -- Build files have been written to: E:/blutter/build/blutter_dartvm3.4…

创新指南|如何将人工智能应用于未来的创新管理——并不断付诸实践

ChatGPT 的推出加剧了围绕人工智能的炒作&#xff0c;现在我们看到了前所未有的巨大进展。对于我们这些热衷于创新的人来说&#xff0c;这是一个激动人心的时刻。他们正在共同采取措施&#xff0c;充分利用人工智能进行创新管理。本文将阐述人工智能能为创新管理做什么&#xf…

文件包含一-WEB攻防-PHP应用文件包含LFIRFI伪协议编码算法无文件利用黑白盒

演示案例&#xff1a; 文件包含-原理&分类&利用&修复黑盒利用-VULWEB-有无包含文件白盒利用-CTFSHOW-伪协议玩法 #文件包含-原理&分类&利用&修复 1、原理 程序开发人员通常会把可重复使用的函数写到单个文件中&#xff0c;在使用某些函数时&#xff0c…

docker 的八大技术架构(图解)

docker 的八大技术架构 单机架构 概念&#xff1a; 应用服务和数据库服务公用一台服务器 出现背景&#xff1a; 出现在互联网早期&#xff0c;访问量比较小&#xff0c;单机足以满足需求 架构优缺点&#xff1a; 优点&#xff1a;部署简单&#xff0c;成本低 缺点&#xff1…

Java生成p12证书

本文章使用的环境 jdk1.8&#xff0c;spring-boot2.6.13 一、pom依赖 <dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.49</version></dependency><dependency>&…

PCL点云处理之最小中值平方(Lmeds法)拟合平面(二百三十四)

PCL点云处理之 最小中值平方法(Lmeds)拟合平面(二百三十四) 一、算法介绍一、拟合原理二、具体实现1.代码2.结果一、算法介绍 (本文提供详细注释,输出拟合平面参数和平面点云) Lmeds(Least Median of Squares)是一种统计学方法,用于拟合数据并减少异常值对拟合结果…

Spark-Scala语言实战(5)

在之前的文章中&#xff0c;我们学习了如何在scala中定义与使用集合和元组。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#xff08;…

【Web应用技术基础】CSS(6)——使用 HTML/CSS 实现 Educoder 顶部导航栏

第一题&#xff1a;使用flex布局实现Educoder顶部导航栏容器布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Educoder</title><script src"https://cdn.staticfile.org/jquery/1.1…

不启动BMIDE,Teamcenter如何查看property的real property name

问题描述&#xff1a; Teamcenter客户端&#xff0c;查看Item 属性&#xff0c;属性名称默认显示的是Display Name。 在各类开发过程中&#xff0c;对属性的操作&#xff0c;需要使用real property name才能进行。开发可能不在server端&#xff0c;没有安装BMIDE&#xff0c;如…

机器学习——元学习

元学习&#xff08;Meta Learning&#xff09;是一种机器学习方法&#xff0c;旨在使模型能够学习如何学习。它涉及到在学习过程中自动化地学习和优化学习算法或模型的能力。元学习的目标是使模型能够从有限的训练样本中快速适应新任务或新环境。 在传统的机器学习中&#xff…

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

漏洞描述 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的…

第三天-centos配置静态IP

跟着无涯老师学习安全知识的一天,今天遇到点问题。给新创建的centos配置静态IP的时候,可能是网卡配置文件里的内容修改或添加的不对,配置完之后网络不通。尝试了几次都没成功,明天再试试吧,今天就记这几个简单的命令,加油,晚安。

线程创建方式、构造方法和线程属性

欢迎各位&#xff01;&#xff01;&#xff01;推荐PC端观看 文章重点&#xff1a;学会五种线程的创造方式 目录 1.开启线程的五种方式 2.线程的构造方法 3.线程的属性及获取方法 1.开启线程的五种方式 创造线程的基本两步&#xff1a;&#xff08;1&#xff09;使用run方法…

学习笔记:NATS--自适应边缘和分布式系统的连接技术。(更新中)

基于NATS英文官方文档的学习,我将使用简单易懂的语言去解释NATS的各种机制及其原理。预计在一个月内,也就是在5月之前完成对NATS官方文档的笔记。大家可以将此笔记当做官方文档的中文低配版来学习。欢迎大家的阅读,也希望各位指出我笔记中可能存在的各种错误。目录1. NATS: …