Spring Boot 項目使用 flyway

在項目迭代開發中,難免會有更新數據庫 Schema 的情況,比如添加新表、在表中增加字段或者刪除字段等,那麼當我對數據庫進行一系列操作後,如何快速地在其他同事的電腦上同步?如何在測試/生產服務器上快速同步?

Flyway 簡介

Flyway 是獨立於數據庫的應用、管理並跟蹤數據庫變更的數據庫版本管理工具。用通俗的話講,Flyway 可以像 Git 管理不同人的代碼那樣,管理不同人的 sql 腳本,從而做到數據庫同步。

Spring Boot 集成 Flyway

  • 1、在你的SpringBoot 項目中加入如下依賴:

    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
        <version>5.2.4</version>
    </dependency>
    
  • 2、然後在 application.yml 中寫入 Flyway 的相關配置(Flyway locations 默認讀取當前項目下的 resources/db/migration 目錄)

      #數據庫版本管理和遷移
      flyway:
        baseline-on-migrate: true
        locations: classpath:db
    

    完整的yml文件,將上面的配置放到spring下就行。不用在flyway下配置數據庫路徑、用戶名、密碼,你只要yml中配置了就行。

    spring:
      profiles:
        active: dev
      servlet:
        multipart:
          # 單個文件的最大值
          max-file-size: 500MB
          # 上傳文件總的最大值
          max-request-size: 1000MB
      #時間戳統一轉換
      #jackson:
      #  date-format: yyyy-MM-dd
      #  time-zone: GMT+8
      #數據庫版本管理和遷移
      flyway:
        baseline-on-migrate: true
        locations: classpath:db
    server:
      #端口號
      port: 8888
    # 日誌
    logging:
      config: classpath:logback-spring.xml
    #mybatis plush全局配置
    mybatis-plus:
      global-config:
        db-config:
          # 全局邏輯刪除的實體字段名
          logic-delete-field: is_valid
          # 邏輯已刪除值(默認爲 1)
          logic-delete-value: 0
          # 邏輯未刪除值(默認爲 0)
          logic-not-delete-value: 1
          #掃描路徑
      typeAliasesPackage: com.sinosoft
      #xml映射路徑
      mapperLocations: classpath*:mapper/*/*Mapper.xml,classpath*:mapper/*Mapper.xml
    
    
  • 3、接下來,在 resources/db 目錄下創建需要執行的 SQL 腳本即可。注意 resoureces 目錄下存放SQL腳本的文件夾是否和配置的一樣。

命名規範:

  • Prefix 前綴:V 代表版本遷移,U 代表撤銷遷移,R 代表可重複遷移
  • Version 版本號:版本號通常 . 和整數組成
  • Separator 分隔符:固定由兩個下劃線 __ 組成
  • Description 描述:由下劃線分隔的單詞組成,用於描述本次遷移的目的
  • Suffix 後綴:如果是 SQL 文件那麼固定由 .sql 組成,如果是基於 Java 類則默認不需要後綴
//根據規範在resources/db目錄下創建SQL腳本文件
V1.0_20211104_1_表結構初始化.sql
V1.0_20211104_2_初始化碼錶.sql
OR
V20211104_1__表結構初始化.sql
V20211104_2__初始化碼錶.sql

第一次配置好使用需要把原來數據庫的表結構刪除。

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