FlyWay可以帮助我们更好的管理项目的sql脚本,由我们手动执行改为自动执行,以下大概写个步骤
1:pom文件引入依赖
<dependency>
<groupId>org
.flywaydb
</groupId
>
<artifactId>flyway
-core
</artifactId
>
<version>5.2.1</version
>
</dependency
>
<plugin>
<!--引入maven
:flyway插件
-->
<groupId>org
.flywaydb
</groupId
>
<artifactId>flyway
-maven
-plugin
</artifactId
>
<version>4.1.0</version
>
</plugin
>
2:加入对应配置
#是否开启flyway 开启:项目启动自动执行对应目录下的脚本文件,如果关闭,需要通过插件,或者是java 程序调用实现手动执行
spring
.flyway
.enabled
=false
#flyway执行目录,此配置默认为classpath
:db
/migration
spring
.flyway
.locations
=sql
#其余配置自行百度
3:映射实体配置类,生成Flyway对象注入容器
import org
.flywaydb
.core
.Flyway
;
import org
.flywaydb
.core
.api
.Location
;
import org
.flywaydb
.core
.api
.configuration
.ClassicConfiguration
;
import org
.springframework
.beans
.factory
.annotation
.Value
;
import org
.springframework
.context
.annotation
.Bean
;
import org
.springframework
.context
.annotation
.Configuration
;
@Configuration
public class FlywayConfiguration {
@Value("${spring.datasource.url}")
private String datasourceUrl
;
@Value("${spring.datasource.username}")
private String databaseUsername
;
@Value("${spring.datasource.password}")
private String databasePassword
;
@Value("${spring.flyway.locations}")
private String locations
;
@Bean
Flyway
flyway() {
Location location
= new Location(locations
);
ClassicConfiguration classicConfiguration
= new ClassicConfiguration();
classicConfiguration
.setDataSource(datasourceUrl
, databaseUsername
, databasePassword
);
classicConfiguration
.setBaselineOnMigrate(true);
classicConfiguration
.setLocations(location
);
Flyway flyway
= new Flyway(classicConfiguration
);
flyway
.setLocations(locations
);
return flyway
;
}
}
4:在对应的java方法中注入Flyway对象,调用对应的方法即可
@Autowired
private Flyway flyway
;
@RequestMapping(value
= "/data/migrate", method
= RequestMethod
.GET
)
@ApiOperation("数据迁移")
public Integer
doDataMigrate() {
flyway
.setLocations("sql1");
return flyway
.migrate();
}
说明:执行迁移时,会在对应数据库建立一个数据库迁移的记录表,默认表名为
flyway_schema_history
用以记录数据迁移
5:对应脚本说明
脚本的命名有自己的规范: V版本号__描述.sql,注意版本号与描述之间是两个下划线;
例如:V1__ceshi1.sql 脚本内容说明:
-- ------------------------------
-- 声明自己所要使用的数据库
-- ------------------------------
use flyway
;
-- ------------------------------
-- 对应的库表sql语句
-- ------------------------------
CREATE TABLE person
(
id
int(11) NOT NULL AUTO_INCREMENT
,
first
varchar(100) NOT NULL
,
last
varchar(100) NOT NULL
,
dateofbirth DATE DEFAULT null
,
placeofbirth
varchar(100) not null
,
PRIMARY KEY
(id
)
) ENGINE
=InnoDB DEFAULT CHARSET
=utf8
;
说明: @1版本以V开头,每个文件只会被执行一次 @1版本以R开头,每次调用每个文件都会被会被执行一次
sql脚本对应的执行顺序依照其命名规则: 递增依次执行