背景:
在新建一个springboot工程时不想通过直接操作数据库来实现表格的创建和更新,而是直接将数据表格的操作代码放到springboot工程里面,项目运行时就会自动创建更新数据库表格。
1. 引入 flywaydb库
在pom.xml文件中引入flywaydb库,代码如下:
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>7.15.0</version>
</dependency>
注:我的springboot版本为2.6.13 ,对应的flywaydb版本为7.15.0
2. application.yml文件中添加flywaydb配置,代码如下:
spring:
datasource:
url: jdbc:mysql://10.******:3306/*** #url
username: root
password: ro
driver-class-name: com.mysql.cj.jdbc.Driver #数据库链接驱动
flyway:
enabled: true
baseline-on-migrate: true
table: test_history
encoding: UTF-8
注:如果需要查看flyway日志,可以增加如下配置:
logging:
level:
org.flywaydb: DEBUG
3. 添加sql文件
注: V1__init.sql 这个文件需要有,里面内容随便写一些语法正确但是非业务的sql语句,比如
select database();,因为如果没有这个文件,下面的V1__***.sql 文件就无法在数据库中被创建,原因我个人理解,是只入库变更的记录。如果有其他理解,可以一起讨论。
V2__***.sql 示例代码:
CREATE TABLE IF NOT EXISTS data_test (
id INT(6) PRIMARY KEY AUTO_INCREMENT,
user_id VARCHAR(64),
insert_time DATETIME
)ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_0900_ai_ci;
按照上面方式配置完成,运行springboot工程,刷新数据库,即可看到创建的表格。
注:我这边在运行遇到一个奇怪现象,记录一下,如果有知道原因的同学可以在下方评论一下
运行后发现mysql数据库中连上面第二部中定义的 tables:test_history 表格(这个表格是自动生成记录flyway日志的)都没生成出来,查了一下资料说需要在pom文件中添加jdbc依赖库,添加之后发现确实可以了,但是后来发现把这段注释掉,依然可以。。。
<dependency>-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>-->