在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. echarts饼图中央自定义文字

    var option = { tooltip: { trigger: 'item' }, legend: { top: '5%', left: 'center' }, //中央自定义文字 title: ...

  2. 【K哥爬虫普法】老铁需要车牌靓号吗?判刑的那种

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  3. Unity Editor自定义菜单排序(MenuItem Order)

    扩展Unity的菜单MenuItem MenuItem 属性用于向主菜单和检视面板上下文菜单添加菜单项. 该 MenuItem 属性能够将任何静态函数转变为菜单命令,仅静态函数可使用 MenuItem ...

  4. ansible使用,搭建mongo的replica-set小结

    ansible 前言 常用到的指令 查看ip是否可用 执行 执行,查看日志输出 查看这个 playbook 的执行会影响到哪些 hosts 设置服务器免密登录 ansible了解 变量名的使用 pla ...

  5. Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏、实物、人物、风景、动漫、邮票、海报等生成,终极模板教学

    Midjourney|文心一格prompt教程[Text Prompt(下篇)]:游戏.实物.人物.风景.动漫.邮票.海报等生成,终极模板教学 场景6:游戏 Prompt 真的越长越好吗? 按照 Mi ...

  6. 百度飞桨:ERNIE 3.0 、通用信息抽取 UIE、paddleNLP的安装使用[一]

     相关文章: 基础知识介绍: [一]ERNIE:飞桨开源开发套件,入门学习,看看行业顶尖持续学习语义理解框架,如何取得世界多个实战的SOTA效果?_汀.的博客-CSDN博客_ernie模型 百度飞桨: ...

  7. 6.1 C++ STL 序列映射容器

    Map/Multimap 映射容器属于关联容器,它的每个键对应着每个值,容器的数据结构同样采用红黑树进行管理,插入的键不允许重复,但值是可以重复的,如果使用Multimap声明映射容器,则同样可以插入 ...

  8. C/C++ Crypto密码库调用方法

    Crypto 库是C/C++的加密算法库,这个加密库很流行,基本上涵盖了市面上的各类加密解密算法,以下代码是我在学习是总结的,放到这里用于后期需要时能够快速解决问题. 项目地址:https://www ...

  9. 音乐播放器 — 用 vant4 中的滑块自定义播放器进度条

    一.运行效果 二.代码实现 2.1.HTML: <!-- 音频播放器 --> <audio ref="audio" src="音乐名称.mp3" ...

  10. Java应用系统监控方法简介

    1. tsar 阿里巴巴开源的实时系统监控工具.其内部的sunfire有部分指标就是基于该工具每分钟采集一次来获取的. github 监控项及数据来源一览 摘自tsar/info.md 监控项 来源 ...