1、新建springboot项目
2、导入flyway的maven依赖
<!--引入flyway--> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>6.1.0</version> </dependency>
3、导入jdbc驱动
<!-- Mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
4、还需要导入数据库操作持久层依赖(mybatis、jsbcTemplate等),若不导入,不会报错,项目启动也不会执行脚本
<!-- <dependency>--> <!-- <groupId>com.github.pagehelper</groupId>--> <!-- <artifactId>pagehelper-spring-boot-starter</artifactId>--> <!-- <version>1.2.13</version>--> <!-- </dependency>--> <!-- <dependency>--> <!-- <groupId>tk.mybatis</groupId>--> <!-- <artifactId>mapper-spring-boot-starter</artifactId>--> <!-- <version>1.1.5</version>--> <!-- </dependency>--> <!--jdbc template --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
5、application.yml配置
spring: # 数据库连接配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/ssm-demo?characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 username: root password: 111111 flyway: # 是否启用flyway enabled: true # 编码格式,默认UTF-8 encoding: UTF-8 # 迁移sql脚本文件存放路径,默认db/migration locations: classpath:db/migration # 迁移sql脚本文件名称的前缀,默认V sql-migration-prefix: V # 迁移sql脚本文件名称的分隔符,默认2个下划线__ sql-migration-separator: __ # 迁移sql脚本文件名称的后缀 sql-migration-suffixes: .sql # 迁移时是否进行校验,默认true validate-on-migrate: true # 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表 baseline-on-migrate: true
6、resource目录下创建db/migration目录
添加需要运行的sql脚本。sql脚本的命名规范为:V+版本号(版本号的数字间以”.“或”_“分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V20211009__test.sql。
V20211008__test.sql脚本内容:
drop table if exists test; create table test ( id int(11) not null auto_increment, name varchar(200), data varchar(200), primary key (id) ) engine=innodb auto_increment=1 default charset=utf8; insert into test(name,data) values ('11', '22'); commit;
V20211009__test.sql脚本内容:
insert into test(name,data) values ('3242', 'fnsjkfnkdsfdks的前为你打开九七五年的');
项目结构图:
7、启动项目。启动成功后,在数据库中可以看到已按照定义好的脚本,完成数据库变更,并在flyway_schema_history
表插入了sql执行记录