Spring Boot 2.6.7 初始化 MySQL 数据库

前言

有些场景,需要我们在项目启动的时候,初始化数据库表。JPA 虽然能达到很好的功能,但是我们用的是 Mybatis Plus,因此使用 Spring 官方提供的启动项目时初始化 sql 的功能。

引入依赖

当前项目应为一个 Spring Boot 项目,引入 mysql 驱动依赖到 pom.xml 中

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

配置文件

在 springboot 的 application.properties 配置文件中,增加数据库连接配置与初始化数据库的操作

#============================================================================
# 数据库链接配置
#============================================================================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot-admin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&sslMode=DISABLED
spring.datasource.username=root
spring.datasource.password=springboot-admin-13921
spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.maximum-pool-size=10
# 执行初始化脚本的用户名称
spring.sql.init.username=root
# 非嵌入式数据库,always 才会执行初始化 sql
spring.sql.init.mode=always
# 执行初始化脚本的用户密码
spring.sql.init.password=springboot-admin-13921
# 初始化的schema脚本位置
spring.sql.init.schema-locations=classpath*:sql/schema.sql

定义 sql 文件

根据上述的配置,可以看到 classpath*:sql/schema.sql ,下面就在 springboot 项目中的资源文件 resources 下,新建 sql 文件夹,然后新建 schema.sql 文件

CREATE TABLE IF NOT EXISTS `admin_user`
(
    `user_id`    bigint                                  NOT NULL AUTO_INCREMENT COMMENT '自增 ID',
    `username`   varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
    `user_phone` varchar(255) COLLATE utf8mb4_general_ci          DEFAULT NULL COMMENT '手机号',
    `password`   varchar(255) COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
    `avatar`     varchar(255) COLLATE utf8mb4_general_ci          DEFAULT NULL COMMENT '头像',
    `is_delete`  int                                     NOT NULL DEFAULT '0' COMMENT '逻辑删除 0-未删除 1-已删除',
    PRIMARY KEY (`user_id`)
) ENGINE = InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_general_ci;

INSERT INTO `admin_user` (username, user_phone, `password`, avatar)
values ('root', '', '$2a$10$a.6pvIt48KwZ.Zu/Sz.wruTK10WhIx8WK1iglIE1ARVHuJYcBlfYm', ''),
       ('user', '', '$2a$10$a.6pvIt48KwZ.Zu/Sz.wruTK10WhIx8WK1iglIE1ARVHuJYcBlfYm', '');

启动项目

项目 ...Application 启动类,启动后,会发现数据库中已经新生成的表,并且插入的数据存在。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Fine_Cui/article/details/124704798