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

Posted by Li Hui on Sunday, January 2, 2022

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

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

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

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

1. 启动数据库

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

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

命令如下:

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

命令释义:

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

使用 docker ps 查看容器状态

image-20220102221140-yfr7uwo.png

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

建表语句

create table person
(
    id   bigint(100) auto_increment
        primary key,
    name varchar(256) null,
    constraint person_id_uindex
        unique (id)
);

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

2.1 添加依赖

build.gradle 中添加如下依赖

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

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

所在位置如下:

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

image-20220102223111-fkj8lk6.png

2.2 配置连接信息

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

spring:
  datasource:
    url: jdbc:mysql://localhost:13306/person
    username: root
    password: test

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

3.1 查询数据库测试

代码依次如下:

Person.java

package com.example.firstapi;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Data
@Entity
@Table(name = "person")
public class Person {
    @Id
    private long id;
    private String name;
}

PersonRepository.java

package com.example.firstapi;

import org.springframework.data.jpa.repository.JpaRepository;

public interface PersonRepository extends JpaRepository<Person, Long> {
}

PersonService.java

package com.example.firstapi;

import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PersonService {
    private final PersonRepository personRepository;

    public PersonService(PersonRepository personRepository) {
        this.personRepository = personRepository;
    }

    public List<Person> getAllPerson() {
        return personRepository.findAll();
    }
}

PersonController.java

package com.example.firstapi;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class PersonController {
    private final PersonService personService;

    public PersonController(PersonService personService) {
        this.personService = personService;
    }

    @GetMapping("/persons")
    public List<Person> GetAllPerson() {
        return personService.getAllPerson();
    }
}

3.2 测试联通

3.2.1 启动时检测

image-20220102232110-8yizrpl.png

3.2.2 代码检测

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

可以看到是返回空数组

我们在数据库中插入数据

SQL 如下:

INSERT INTO person.person (name)
VALUES ('xiaoming');

INSERT INTO person.person (name)
VALUES ('xiaohong');

再次请求

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