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

第一次配置好使用需要把原来数据库的表结构删除。

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