首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

194.Spring Boot 数据库迁移:Flyway

【视频&交流平台】

àSpring Boot视频

http://study.163.com/course/introduction.htm?courseId=1004329008&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

àSpring Cloud视频

http://study.163.com/course/introduction.htm?courseId=1004638001&utm_campaign=commission&utm_source=400000000155061&utm_medium=share

àSpring Boot源码

https://gitee.com/happyangellxq520/spring-boot

àSpring Boot交流平台

http://412887952-qq-com.iteye.com/blog/2321532

说明:

(1)Spring Boot 版本:1.5.12.RELEASE

(2)Flyway版本:3.2.1

前言:

在上一篇文章中,我们提到了Spring Boot为两款流行的数据库迁移工具提供了自动配置支持,这节我们就先介绍下Flyway。

一、什么是Flyway?

官网地址:http://flywaydb.org

Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式。Flyway可以独立于应用实现管理并跟踪数据库变更,支持数据库版本自动升级,并且有一套默认的规约,不需要复杂的配置,Migrations可以写成SQL脚本,也可以写在Java代码中,不仅支持Command Line和Java API,还支持Build构建工具和Spring Boot等,同时在分布式环境下能够安全可靠地升级数据库,同时也支持失败恢复等。

二、为什么使用Flyway?

在开发产品新特性过程中,难免会遇到需要更新数据库Schema的情况,比如:添加新表,添加新字段和约束等。那么如何快速地在其他开发者机器上同步?并且如何在测试服务器上快速同步?以及如何保证集成测试能够顺利执行并通过呢?

以上问题可以通过Flyway工具来解决,Flyway可以实现自动化的数据库版本管理,并且能够记录数据库版本更新记录

三、Flyway在Sping Boot的使用

3.1新建一个项目

新建项目,取名为:springboot-flyway

3.2添加依赖

在pom.xml文件中添加依赖:

说明:

(1)Flyway的依赖是:flyway-core;

(2)为什么需要配置JPA和MySQL驱动:默认情况下,Flyway会自动注入注解了@Primary的DataSource,那么这个数据源是哪来的呢?那这里就是使用了JPA了(当然你可以使用jdbcTemplate或者是MyBatis);由于我们使用mysql数据库进行测试,那么就需要引入MySQL驱动了。

3.3添加配置

在application.properties文件添加配置:

这个没什么好说的,就是数据源和jpa的基本配置。

3.4 Flyway存放路径说明

默认情况下是classth:db/migration,但你能够使用flyway.locations进行修改。这里我们使用默认就好了,为了接下里的测试,在resources创建目录db/migration:

src/main/resources

- db

-- migration

3.5 Flyway sql脚本命令规则

对于Flyway的脚本V__.sql,这里的VERSION使用下划线进行命名的方式,比如:直接命名为1或者是1_1(这个就是代表1.1版本);NAME:对当前脚本的描述,这里举例说明下:

V3__insertBook.sql:这就代表version=3,描述为insertBook;V2_1__insertAuthor.sql:这就代表version=2.1,描述为insertAuthor;

温馨提醒:其一这里的V字母要大写;其二上面中间是双杠。

3.6测试一

db/migration下新建文件V1_1__init.sql,脚本如下:

运行应用,查看数据库中是否多了两个表:

其一是book表,这是我们脚本中创建的,其二是Flyway版本管理的表schema_version:

(这里是截取了,执行了之后脚本的图,第一次执行的话,应该只会一条数据。)

3.7测试二

db/migration下新建文件V1_2__insertBook.sql,脚本如下:

运行应用,查看book表中是否多了条数据,schema_version是否多了条版本记录。

到此为止,Flyway的使用就一切顺利了,到这里就告一段落了。

点赞、转发、评论,伸出你的双手666…召唤你的小蚂蚁:

你就是你,不一样的小蚂蚁!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180505B0BL3F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券