[SpringBoot 指南] 连接 mysql 数据库并进行增删改查测试

Posted by Li Hui on Sunday, January 2, 2022

落库是软件开发中的重要的事情,软件接受完成请求后,对请求的结果进行落入输入库是一件很重要的事情,而本篇文章想写出的内容就是 Springboot 连接本地的数据库的使用方案,本章文章也是入门的文章,因此篇幅可能不大。

本篇文章的主要内容有哪些呢? 连接数据库主要分为

  1. 启动数据库
  2. 设置依赖
  3. 连接数据库并测试 增删改查基本功能

因此文章分为下面的三部分

1. 启动数据库

本文章为了演示比较简便采用的是 docker 创建的数据库

Docker 安装很容易安装,此处不再赘述 Docker 命令如何使用将单独写出 本文章只涉及几个日常命令 docker run , docker ps

命令如下:

1docker run --platform=linux/x86_64 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=test --name test -d mysql:5.7

命令释义:

1--platform 设置平台的类型
2-p {宿主机端口}:{容器端口}
3-e 设置变量
4--name 设置容器的名称
5-d 后台运行

使用 docker ps 查看容器状态

image-20220102221140-yfr7uwo.png

使用数据库连接工具连接数据库,并创建数据库 person 和数据表 person

建表语句

1create table person
2(
3    id   bigint(100) auto_increment
4        primary key,
5    name varchar(256) null,
6    constraint person_id_uindex
7        unique (id)
8);

2. 添加依赖并设置连接信息

2.1 添加依赖

build.gradle 中添加如下依赖

本文采用的是最新的依赖,如果企业使用,推荐使用稳定版本

1    implementation 'org.springframework.data:spring-data-jpa:2.6.0'
2    implementation 'mysql:mysql-connector-java:8.0.25'
3    implementation 'org.projectlombok:lombok:1.18.20' # 为了快速开发

所在位置如下:

image-20220102223058-wx9fu9c.png 点击右上角小象标志刷新依赖

image-20220102223111-fkj8lk6.png

2.2 配置连接信息

在 resources 目录下添加 application.yml 文件并添加如下配置

1spring:
2  datasource:
3    url: jdbc:mysql://localhost:13306/person
4    username: root
5    password: test

3. 测试连接数据库并测试业务逻辑

3.1 查询数据库测试

代码依次如下:

Person.java

 1package com.example.firstapi;
 2
 3import lombok.Data;
 4
 5import javax.persistence.Entity;
 6import javax.persistence.Id;
 7import javax.persistence.Table;
 8
 9@Data
10@Entity
11@Table(name = "person")
12public class Person {
13    @Id
14    private long id;
15    private String name;
16}

PersonRepository.java

1package com.example.firstapi;
2
3import org.springframework.data.jpa.repository.JpaRepository;
4
5public interface PersonRepository extends JpaRepository<Person, Long> {
6}

PersonService.java

 1package com.example.firstapi;
 2
 3import org.springframework.stereotype.Service;
 4
 5import java.util.List;
 6
 7@Service
 8public class PersonService {
 9    private final PersonRepository personRepository;
10
11    public PersonService(PersonRepository personRepository) {
12        this.personRepository = personRepository;
13    }
14
15    public List<Person> getAllPerson() {
16        return personRepository.findAll();
17    }
18}

PersonController.java

 1package com.example.firstapi;
 2
 3import org.springframework.web.bind.annotation.GetMapping;
 4import org.springframework.web.bind.annotation.RestController;
 5
 6import java.util.List;
 7
 8@RestController
 9public class PersonController {
10    private final PersonService personService;
11
12    public PersonController(PersonService personService) {
13        this.personService = personService;
14    }
15
16    @GetMapping("/persons")
17    public List<Person> GetAllPerson() {
18        return personService.getAllPerson();
19    }
20}

3.2 测试联通

3.2.1 启动时检测

image-20220102232110-8yizrpl.png

3.2.2 代码检测

1curl --location --request GET '127.0.0.1:9090/person'

可以看到是返回空数组

我们在数据库中插入数据

SQL 如下:

1INSERT INTO person.person (name)
2VALUES ('xiaoming');
3
4INSERT INTO person.person (name)
5VALUES ('xiaohong');

再次请求

1curl --location --request GET '127.0.0.1:9090/person'