使用flyway管理spring boot測試數據庫

本文主要記錄一下使用flyway管理spring boot測試環境的數據庫(h2)
之前直接使用的spring.datasource裏面的schema和data屬性配置的,不過數據庫一直變更,每次都修改相關的配置文件太麻煩了,於是引入了flyway,進行版本管理,以後變更數據庫,可以直接添加高版本的配置文件即可。

添加gradle依賴

testCompile "org.flywaydb:flyway-core:5.2.4"

配置flyway

在application.yml文件中添加配置:

spring:
  flyway:
    enabled: true
    locations: classpath:db/migration
    baseline-on-migrate: true
    baseline-version: 1
    validate-on-migrate: true
  • enabled: 默認true,spring boot啓動時自動進行flyway遷移
  • locations: flyway相關數據庫文件的位置
  • baseline-on-migrate:是否使用baseline,配合baseline-version使用,遷移的時候自動忽略版本號低於指定baseline-version的文件
  • validate-on-migrate:對於每個遷移是否自動計算CRC32校驗和

在test下的resources目錄下面創建目錄:db/migration
在該目錄下創建flyway的相關數據庫配置文件,可以包括表的創建修改、表內數據的增刪改等。
文件的格式:
數據的遷移一共有三種類型:Versioned Migrations、Undo Migrations、Repeatable Migrations

  • Versioned Migrations:以V開頭(可以在配置文件中進行自定義配置),然後緊跟版本號,版本號以 _或者.分隔,然後是分隔符 __ (兩個 _),之後是文件的描述信息(以下劃線或者空格分隔單詞),最後是文件後綴.sql。(可選的版本化遷移可以省略分隔符和描述信息)
  • Undo Migrations:以U開頭(可以在配置文件中進行自定義配置),然後緊跟版本號,版本號以 _或者.分隔,然後是分隔符 __(兩個 _),之後是文件的描述信息(以下劃線或者空格分隔單詞),最後是文件後綴.sql。
  • Repeatable Migrations:以R開頭(可以在配置文件中進行自定義配置),然後緊跟分隔符 __(兩個 _),之後是文件的描述信息(以下劃線或者空格分隔單詞),最後是文件後綴.sql。
    樣例如下,我只使用了版本化遷移:
    第一個文件初始化數據庫表,第二個文件初始化數據庫表的數據。
    在這裏插入圖片描述
    文件V1_1__initial_setup.sql:
DROP table if exists user;
create table user
(
  user_key                    varchar(50)                         not null
    primary key,
  name                        varchar(100)                        not null,
  description                 varchar(100)                        null,
  email                       varchar(100)                        null,
  photo                       varchar(100)                        null
);

文件V1_2__initial_data.sql:

INSERT INTO user (user_key, name, description) VALUES ('LG001', 'Lucy', 'A good girl');

然後啓動spring boot的測試時,將自動使用flyway進行數據庫的初始化操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章