1.pom
flyway 依赖
<dependencies>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>9.20.0</version>
</dependency>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-mysql</artifactId>
<version>9.20.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
<scope>runntime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
2.脚本
V1__Create_student1_table.sql
create table `temp`.`student1` (
`id` int not null,
`name` varchar(100) not null
);
V3.1__Add_student1_31_table.sql
INSERT INTO `temp`.`student1` VALUES(3, '31');
V3.2__Add_student1_32_table.sql
INSERT INTO `temp`.`student1` VALUES(3, '32');
V5__Add_student1_5_table.sql
INSERT INTO `temp`.`student1` VALUES(5, '5');
2.测试类
@Test
public void test1() {
String url = "jdbc:mysql://127.0.0.1:3306/temp";
String user = "root";
String password = "123456";
Flyway flyway = Flyway.configure()
// 1.
.dataSource(url, user, password)
// 2.默认是 classpath:db/migration
// .locations("classpath:db/migration")
// 3.默认是 url 配置的 schema
.schemas("flyway")
// 3.默认是 flyway_schema_history
// .table("flyway_schema_history")
// 4.默认值是 false, 设置为 true 后 flyway 将在需要 baseline 的时候, 自动执行一次 baseline。
// 如果没有 flyway_schema_history 这个 metadata 表,
// 在执行 flyway migrate 命令之前, 必须先执行 flyway baseline 命令
.baselineOnMigrate(true)
// 5.指定 baseline 的版本号,默认值为 1, 低于该版本号的 SQL 文件, migrate 时会被忽略
.baselineVersion("0")
// 6.默认是 true,则执行 flyway.clean() 不会删除当前 schema 下所有表
// .cleanDisabled(true)
.load();
// 创建 flyway_schema_history 表
// 默认会记录到表中,版本是 1,故上方需要设置 baselineVersion 为 0,否则版本1的脚本不会执行
// flyway.baseline();
// 删除 flyway_schema_history 表中失败的记录
// flyway.repair();
// 检查 sql 文件
// flyway.validate();
// 执行数据迁移
flyway.migrate();
// 删除当前 schema 下所有表
// flyway.clean();
}