锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. 基于SpringBoot后端实现连接MySQL数据库并存贮数据

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

0
  • JAVA
  • 发布于 2024-08-07
  • 0 次阅读
黄健
黄健

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

目录

一、什么是 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.properties或application.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_name
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

 3、创建实体类:

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

import javax.persistence.Entity;
import javax.persistence.Id;
 
@Entity
public class User {
    @Id
    private 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 {
    @Autowired
    private 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 {
    @Autowired
    private 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
);

用户注册(插入新用户):

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

其中,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 自动配置了许多依赖项,可能会导致依赖冲突或版本不兼容的问题,需要谨慎管理依赖项。
标签: #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.