若依框架前后端分离版,集成数据库版本控制flyway

  1. 在admin模块的pom.xml增加依赖
        <!-- 数据库版本控制 -->
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
            <version>7.15.0</version>
        </dependency>
  1. 在admin模块下的resources 的配置文件spring下增加
  # 数据库版本管理
  flyway:
    #是否启用
    enabled: true
    # 字符编码
    encoding: utf-8
    # 对执行迁移时基准版本的描述
    baseline-description: BaseLineInitialize
    # 开始执行基准迁移时对现有的schema的版本打标签,默认值为1.
    baseline-version: 1.0.0
    # 是否允许无序的迁移,默认 false
    out-of-order: false
    # 当读取元数据表时是否忽略错误的迁移,默认false
    ignore-future-migrations: false
    # 可以支持多个location, 用','隔开
    locations: classpath:db/migration
    #是否创建元数据表
    validate-on-migrate: true
    # flyway 的 clean 命令会删除指定 schema 下的所有 table, 生产务必禁掉。这个默认值是false 理论上作为默认配置是不科学的。
    clean-disabled: false
    # 如果数据库不是空表,需要设置成 true,否则启动报错
    baseline-on-migrate: true
    # 版本控制日志表,默认flyway_schema_history,不同系统建议修改数据
    table: flyway_schema_history
  1. 在framework 下面定义flyway配置bean
package com.qilaike.framework.config;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import org.flywaydb.core.Flyway;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FlywayConfig {

    @Autowired
    private DataSource dataSource;

    // 字符编码
    @Value("${spring.flyway.encoding}")
    private String encoding;

    // 对执行迁移时基准版本的描述
    @Value("${spring.flyway.baseline-description}")
    private String baselineDescription;

    // 是否自动执行基准迁移
    @Value("${spring.flyway.baseline-on-migrate}")
    private boolean baselineOnMigrate;

    // 指定 baseline 的版本号
    @Value("${spring.flyway.baseline-version}")
    private String baselineVersion;

    // 迁移时是否校验
    @Value("${spring.flyway.validate-on-migrate}")
    private boolean validateOnMigrate;

    // 是否允许无序的迁移
    @Value("${spring.flyway.out-of-order}")
    private boolean outOfOrder;

    // 当读取元数据表时是否忽略错误的迁移
    @Value("${spring.flyway.ignore-future-migrations}")
    private boolean ignoreFutureMigrations;

    // 当初始化好连接时要执行的SQL
    //@Value("${flyway.init-sql}")
    //private String initSql;

    @PostConstruct
    public void migrate() {
        Flyway flyway = Flyway.configure()
                .dataSource(dataSource)
                .encoding(encoding)
                .baselineDescription(baselineDescription)
                .baselineOnMigrate(baselineOnMigrate)
                .baselineVersion(baselineVersion)
                .validateOnMigrate(validateOnMigrate)
                .outOfOrder(outOfOrder)
                .ignoreFutureMigrations(ignoreFutureMigrations)
                //.initSql(initSql)
                .load();
        flyway.migrate();
    }

}
  1. 在admin模块下的resources下面增加目录db/migration
  2. 开始在db/migration下面增加sql文件,文件命名有要求若依框架前后端分离版,集成数据库版本控制flyway_第1张图片
    若依框架前后端分离版,集成数据库版本控制flyway_第2张图片
  3. 启动项目,看看自己的sql是否生效,生效则成功,其他情况自己解决去吧!

你可能感兴趣的:(数据库,java,spring,boot)