• 从零开始学Spring Boot系列-集成MySQL


    在Spring Boot中集成MySQL是为了让开发者能够轻松地与MySQL数据库进行交互。本篇文章将指导你如何在Spring Boot 3.2.3项目中使用Gradle来集成MySQL。在此之前,我们需要在Ubuntu 22.04上安装MySQL 8作为我们的数据库服务器。

    安装MySQL8

    本文是在wsl2上的Ubuntu 22.04上安装MySQL8.

    步骤1: 更新系统

    打开终端,并使用以下命令更新系统:

     apt update  
     apt upgrade
    

    步骤2: 安装MySQL

    使用以下命令安装MySQL服务器:

     apt install mysql-server
    

    20240303162852

    步骤3: 启动MySQL服务

    安装完成后,启动MySQL服务, WSL子系统Ubuntu中不包含systemctl命令,使用service命令。

     service mysql start
    

    20240303162955

    步骤4: 验证MySQL安装

    通过以下命令验证MySQL是否正在运行:

    service  mysql status
    

    20240303162812

    我们还可以用查看进程

    ps -ef | grep mysql
    

    20240303163213
    如果一切正常,你将看到MySQL服务正在运行的信息。

    步骤5: 登录Mysql

    第一种登录方法

    root用户没有设置密码,不能从本地登录,可以使用sudo命令进入,此时不需要输入密码回车即可进入。

    mysql -u root -p
    

    20240303163634

    第二种登录方法

    MySQL在安装时会创建很多默认用户,其中就包含一个 debian-sys-maint,并且创建了该用户的随机密码,存储该用户信息的文件位于 /etc/mysql/debian.cnf文件中。
    20240303163938
    可以利用debian-sys-main用户登录MySQL。
    20240303164054

    步骤6: 更改root用户密码

    修改 root 密码 mysql 8.+ 的修改密码方式

    alter user 'root'@'localhost' identified with mysql_native_password by '123456';
    flush privileges;
    

    20240303165308

    步骤7: 设置root用户的远程访问

    此时root用户的host属性仍然是localhost,也就是只能从本地访问,因此可以将root用户的访问权限由本地改为本地和外部都可以访问,将host的值由localhost改为 %。

    update user set user.host='%' where user.user='root';
    flush privileges;
    

    20240303165614
    WSL中的Ubuntu子系统访问可以直接使用127.0.0.1或localhost进行访问。但是在外部一旦换成Ubuntu真正的IP地址访问就会报错。这时还需要修改MySQL配置文件中的相关配置项 /etc/mysql/mysql.conf.d/mysqld.cnf, 修改 bind-address = 0.0.0.0 。
    20240303170902
    重启MySQL后,再次通过IP地址远程连接。

    步骤8: 创建数据库

    使用root用户登录Mysql,创建一个test的数据库

    CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
    

    步骤9: 创建数据表

    创建一张user的表

    CREATE TABLE user (
    id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生ID',
    name VARCHAR(20) NOT NULL COMMENT '姓名',
    email VARCHAR(20)   COMMENT '邮箱',
    age  INT  COMMENT '年龄',
    remark VARCHAR(80) COMMENT '备注',
    PRIMARY KEY (id), /*设置id为主键*/
    INDEX (name) /*设置name为普通索引*/
    ) ENGINE=InnoDB;
    

    步骤9: 插入数据

    在user表中插入一条数据

    INSERT INTO test.user (id, name, email, age, remark) VALUES (1, 'jack', 'jack@163.com', 18, '关注公众号:代码匠心');
    

    添加依赖

    首先,你需要在build.gradle文件中添加Spring Boot的starter-data-jpa和MySQL驱动的依赖。

    plugins {
     id 'java'
     id 'org.springframework.boot' version '3.2.3'
     id 'io.spring.dependency-management' version '1.1.4'
    }
    
    group = 'cn.daimajiangxin'
    version = '0.0.1-SNAPSHOT'
    
    java {
     sourceCompatibility = '17'
     targetCompatibility = '17'
    }
    
     repositories {
            maven { url 'https://maven.aliyun.com/repository/jcenter' }
            maven { url 'https://maven.aliyun.com/repository/google' }
            maven { url 'https://maven.aliyun.com/repository/central' }
            maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    }
    
    dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-web'
     compileOnly 'org.projectlombok:lombok'
     annotationProcessor 'org.projectlombok:lombok'
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     runtimeOnly 'mysql:mysql-connector-java:8.0.17'
    }
    

    配置Spring Boot数据源

    在src/main/resources/application.properties或application.yaml文件中,配置数据源和JPA的相关设置。确保使用你在MySQL安装过程中设置的root密码。
    application.properties

    spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true  
    spring.datasource.username=root  
    spring.datasource.password=your_mysql_root_password
    spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
    spring.jpa.show-sql=true
    

    application.yaml

    spring:  
      datasource:  
        url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true  
        username: root  
        password: your_mysql_root_password  
      jpa:
        database-platform: org.hibernate.dialect.MySQLDialect
        show-sql: true
    

    确保将your_database_name和your_mysql_root_password替换为实际的数据库名称和root用户的密码。

    创建实体

    创建一个简单的实体类,使用JPA注解来映射到数据库表。

    package cn.daimajiangxin.springboot.learning.model;
    
    import jakarta.persistence.Entity;
    import jakarta.persistence.GeneratedValue;
    import jakarta.persistence.GenerationType;
    import jakarta.persistence.Id;
    import lombok.Data;
    
    @Data
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;
        private String name;
        private String email;
        private int age;
        private String remark;
    }
    

    创建Repository

    创建一个继承自JpaRepository的接口,以便Spring Data JPA可以自动为你生成实现。

    package cn.daimajiangxin.springboot.learning.repository;
    
    import cn.daimajiangxin.springboot.learning.model.User;
    import org.springframework.data.jpa.repository.JpaRepository;
    
    public interface  UserRepository extends JpaRepository {
        // 你可以添加自定义查询方法
    }
    
    

    创建Service

    创建一个服务类来处理业务逻辑。

    package cn.daimajiangxin.springboot.learning.repository;
    
    import cn.daimajiangxin.springboot.learning.model.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserService {
        private final UserRepository userRepository;
    
        @Autowired
        public UserService(UserRepository userRepository) {
            this.userRepository = userRepository;
        }
    
        public List getAllUsers() {
            return userRepository.findAll();
        }
    
        // 添加其他业务逻辑方法...  
    }
    

    创建Controller

    创建一个控制器类来处理HTTP请求。

    package cn.daimajiangxin.springboot.learning.controller;
    
    import cn.daimajiangxin.springboot.learning.model.User;
    import cn.daimajiangxin.springboot.learning.repository.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    public class UserController {
        private final UserService userService;
    
        @Autowired
        public UserController(UserService userService) {
            this.userService = userService;
        }
    
        @GetMapping("/users")
        public List getAllUsers() {
            return userService.getAllUsers();
        }
        // 添加其他请求处理方法... 
    }
    

    运行应用程序

    现在,你可以运行你的Spring Boot应用程序,并尝试访问来http://localhost:8080/users查看所有用户的列表。
    20240303184556
    确保你的MySQL数据库正在运行,并且已经创建了相应的数据库和表,并且插入了数据。

    总结

    在Spring Boot中集成MySQL是一项简单而直接的任务,只需添加依赖、配置数据源、创建实体、Repository、Service和Controller即可。在本文中,我们学习了如何在Spring Boot 3.2.3项目中使用Gradle来集成MySQL,并构建了一个简单的RESTful API来获取用户列表。记得根据你的实际需求来调整数据库配置和业务逻辑。


    我是代码匠心,和我一起学习更多精彩知识!!!扫描二维码!关注我,实时获取推送。
    公众号
    源文来自:https://daimajiangxin.cn

  • 相关阅读:
    js函数( 普通函数、箭头函数 ) 内部this的指向
    python+Tesseract OCR实现截屏识别文字
    新手怎样快速上手接口测试?掌握这几个知识点直接起飞!
    Kafka -- 架构、分区、副本
    基于WOA算法的SVDD参数寻优matlab仿真
    处理链运行状态邮件发送
    for、while、do While、for in、forEach、map、reduce、every、some、filter的使用
    perl语言入门学习
    Flutter flutter.minSdkVersion的实际文件位置
    JAVA家教管理系统毕业设计 开题报告
  • 原文地址:https://www.cnblogs.com/daimajiangxin/p/18050487