在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

步骤3: 启动MySQL服务

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

 service mysql start

步骤4: 验证MySQL安装

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

service  mysql status

我们还可以用查看进程

ps -ef | grep mysql



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

步骤5: 登录Mysql

第一种登录方法

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

mysql -u root -p

第二种登录方法

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



可以利用debian-sys-main用户登录MySQL。

步骤6: 更改root用户密码

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

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

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

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

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



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



重启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<User, Long> {
// 你可以添加自定义查询方法
}

创建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<User> 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<User> getAllUsers() {
return userService.getAllUsers();
}
// 添加其他请求处理方法...
}

运行应用程序

现在,你可以运行你的Spring Boot应用程序,并尝试访问来http://localhost:8080/users查看所有用户的列表。



确保你的MySQL数据库正在运行,并且已经创建了相应的数据库和表,并且插入了数据。

总结

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

从零开始学Spring Boot系列-集成MySQL的更多相关文章

  1. 81. Spring Boot集成JSP疑问【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 针对文章: ()Spring Boot 添加JSP支持[从零开始学Spring Boot] 有网友提了这么一些疑问: 1.Spring Boot使用jsp时,仍旧可以打成 ...

  2. (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

    大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...

  3. (37)Spring Boot集成EHCache实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 写后感:博主写这么一系列文章也不容易啊,请评论支持下. 如果看过我之前(35)的文章这一篇的文章就会很简单,没有什么挑战性了. 那么我们先说说这一篇文 ...

  4. (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...

  5. (6)Spring Boot datasource - mysql【从零开始学Spring Boot】

    在任何一个平台都逃离不了数据库的操作,那么在spring boot中怎么接入数据库呢? 很简单,我们需要在application.properties进行配置一下,application.proper ...

  6. 53. spring boot系列合集【从零开始学Spring Boot】

    前40章节的spring boot系列已经打包成PDF在csdn进行发布了,如果有需要的可以进行下载. 下载地址:http://download.csdn.net/detail/linxinglian ...

  7. 57. Spring 自定义properties升级篇【从零开始学Spring Boot】

    之前在两篇文章中都有简单介绍或者提到过 自定义属性的用法: 25.Spring Boot使用自定义的properties[从零开始学Spring Boot] 51. spring boot属性文件之多 ...

  8. 21. Spring Boot过滤器、监听器【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52069490 上一篇文章已经对定义Servlet 的方法进行了说明,过滤器(Filter) ...

  9. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】

    [原创文章,转载请注明出处] 个人使用比较习惯的json框架是fastjson,所以spring boot默认的json使用起来就很陌生了,所以很自然我就想我能不能使用fastjson进行json解析 ...

  10. 77. Spring Boot Use Thymeleaf 3【从零开始学Spring Boot】

    [原创文章,转载请注明出处] Spring Boot默认选择的Thymeleaf是2.0版本的,那么如果我们就想要使用3.0版本或者说指定版本呢,那么怎么操作呢?在这里要说明下 3.0的配置在spri ...

随机推荐

  1. element-ui中Select 选择器去除点击时的淡蓝色边框

    <el-select class="my-el-select" v-model="tenantCont" placeholder="请输入机构标 ...

  2. # 再次推荐github 6.7k star开源IM项目OpenIM性能测试及消息可靠性测试报告

    本报告主要分为两部分,性能测试和消息可靠性测试.前者主要关注吞吐,延时,同时在线用户等,即通常所说的性能指标.后者主要模拟真实环境(比如离线,在线,弱网)消息通道的可靠性. 先说结论,对于容量和性能: ...

  3. 快捷方式 ABP——切换MySQL数据库

    当基于ABP开发一段时间后,切换数据库可以使用快捷方式 方法如下: 第一步: 前提是要知道所使用的数据库的版本 1. vs 2017需要点击XXX.XXX.EntityFrameworkCore,右键 ...

  4. Vue双向数据绑定原理-中

    defineProperty方法 defineProperty除了可以动态修改/新增对象的属性以外, 还可以在修改/新增的时候给该属性添加get/set方法, 从而实现数据劫持. defineProp ...

  5. C++ 通过SQLite实现命令行工具

    本文介绍了一个基于 C++.SQLite 和 Boost 库的简单交互式数据库操作 Shell.该 Shell 允许用户通过命令行输入执行各种数据库操作,包括添加.删除主机信息,设置主机到特定主机组, ...

  6. javascript按钮通过cookie限制60s后才可以点击

    javascript按钮通过cookie限制60s后才可以点击 1️⃣ 首先创建一个html页面,放入一个按钮 2️⃣ 设置点击按钮的触发函数 一般当点击按钮都会有一些业务需要,在需求结束后,触发sa ...

  7. [JVM] CPU缓存一致性协议

    CPU缓存一致性协议 CPU高速缓存 CPU缓存是位于cpu和内存之间的临时数据交换器,它的容量比内存小的夺但是交换速度要比内存快得多,主要是为了解决cpu运行时的处理速度与内存读写速度不匹配的问题. ...

  8. NC24870 [USACO 2009 Dec G]Video Game Troubles

    题目链接 题目 题目描述 Farmer John's cows love their video games! FJ noticed that after playing these games th ...

  9. NVME(学习笔记二)—CMB

    什么是CMB 在NVMe Express 1.2 Spec中开始支持一个特性,那就是CMB(Controller Memory Buffer),是指SSD控制器内部的读写存储缓冲区,与HMB(Host ...

  10. Linux进程通信 | 共享内存

    一.共享内存是什么 在Linux系统中,共享内存是一种IPC(进程间通信)方式,它可以让多个进程在物理内存中共享一段内存区域. 这种共享内存区域被映射到多个进程的虚拟地址空间中,使得多个进程可以直接访 ...