1.简介

Flyway提供了集成SpringBoot项目的方式,将flyway集成进SpringBoot后,flyway使用boot项目中定义的数据源,并在每次项目启动时,都会去执行(flyway migrate)。flyway中一些配置也可以通过boot项目的application.yml文件进行配置。

2.案例演示

环境:
①空的flyway数据库

2.1项目搭建

①pom文件

  1. <dependency>
  2. <groupId>org.flywaydb</groupId>
  3. <artifactId>flyway-core</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. </dependency>

②在resource目录下创建db.migrate目录
image.png

①②两步可以在创建工程时选择Flyway Migrate来替代,选择后项目会自动生成。 image.png

③配置application.yml配置文件

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://127.0.0.1:3306/flyway?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
  4. username: root
  5. password: 888888

④在resource/db/migrate中编写一个sql脚本**V1__init.sql**

  1. create table person(
  2. id varchar(10) not null,
  3. name varchar(100)
  4. );

image.png
⑤运行程序,观察数据库和日志
flyway migrate会被默认执行
image.png
数据库被创建 person 表
image.png

2.2IDEA中配置Flyway 脚本创建插件

在编写Flyway脚本时,偶尔会忘记具体命名的格式,IDEA中的Flyway插件的作用就是为你规范脚本命名格式的
①搜索插件Flyway并安装
image.png
②在/resource/db/migration目录下创建一个Flyway文件
image.png
③点击后输入脚本名称
NewFlywayMigration
Entermigrationdescription
hello
Cancel
OK

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/1609516/1610249401939-6809a441-cd30-4549-9797-f0d53b08748d.png "image.png") <br />**④查看创建出来的脚本**<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/1609516/1610249424968-31cc6205-5599-4188-bbc4-f1339278554d.png#align=left&display=inline&height=117&margin=%5Bobject%20Object%5D&name=image.png&originHeight=117&originWidth=455&size=5831&status=done&style=none&width=455)

默认的版本号为时间戳,可以进行自行的修改。具体修改方式自行百度即可

2.3Flyway配置项

flyway一些配置项可以在application.yml配置,下面挑几个来说一下配置

  1. spring:
  2. datasource:
  3. url: jdbc:mysql://127.0.0.1:3306/flyway?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
  4. username: root
  5. password: 888888
  6. flyway:
  7. #若原数据库非空库,需要将此项设置为true 默认为 false
  8. baseline-on-migrate: true
  9. #指定脚本文件的位置 默认 db/migration 可以指定多个
  10. locations: classpath:db/migration,classpath:mysql/migration
  11. #数据库,若不指定,使用spring.datasource指定的数据库
  12. url: jdbc:mysql://127.0.0.1:3306/flyway2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
  13. #数据库用户,不指定使用 spring.datasource下的
  14. user: root
  15. #数据库密码 不指定使用 spring.datasource下的
  16. password: 888888