java开发flyway的方法

所属分类: 软件编程 / java 阅读数: 78
收藏 0 赞 0 分享

FlyWay官网:https://flywaydb.org/getstarted/firststeps/maven

Flyway做为database migration开源工具,功能上像是Git、svn这种代码版本控制。google搜索database migration,或者针对性更强些搜索database migration Java,会有其它的framework、tool、甚至aws的service。因为项目使用到了flyway,而且确实google中排第一位的搜索结果就是flyway,那就之后有机会再与其它方案做比较,先对flyway做下学习笔记。

数据库版本管理工具

什么是数据库版本管理?

做过开发的小伙伴们都知道,实现一个需求时,一般情况下都需要设计到数据库表结构的修改。那么我们怎么能保证项目多人开发时,多个数据库环境(测试,生产环境)能够保持一致呢?在没有数据库版本管理工具之前,需要将数据库修改脚本拷贝到每个数据库环境进行执行。而有了数据库版本管理工具之后,程序在启动的时候就会根据实现定义好的规则来进行数据库脚本的执行。

使用flyway

使用环境

#用的是springboot项目,mysql数据库

导入flayway和mysql依赖

<dependency>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-core</artifactId>
</dependency>
<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

创建数据库脚本目录

在resources资源目录下创建db/migration目录。

添加数据库脚本

#脚本命名规则 V<VERSION>__<NAME>.sql,P<VERSION>__<NAME>.sql。V代表只执行一次,P代表可以执行多次
#VERSION代表数据库脚本版本,NAME代表数据名称。

#这里使用V1_test.sql,脚本内容如下所示。

DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
 `id` int(11) NOT NULL,
 `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
 PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `role` VALUES (1, '1');

properties文件配置

#指定数据库脚本为UTF-8, flyway的配置有很多,有兴趣的小伙伴可以去看下
spring.flyway.encoding=utf-8

#如果原来的数据库不为空,则需要设置
spring.flyway.baseline-on-migrate=true

#设置数据库起始版本为0,默认为1。如果你写的sql脚本version小于等于起始版本则不会执行。
spring.flyway.baseline-version=0

#数据源配置
spring.datasource.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

启动应用程序,查看控制台输出

数据库查看

此时flyway会默认添加一张记录数据库版本信息的表,每次启动时会根据version值判断是否需要执行sql。

flyway是怎么执行的?

#spring-boot-dependencies 导入了flyway,mysql依赖。
#spring-boot-autoconfigure 中导入了FlywayAutoConfiguration自动配置类
更多精彩内容其他人还在看

JavaWeb项目部署到服务器详细步骤详解

这篇文章主要介绍了JavaWeb项目如何部署到服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA基于支付宝小程序搭建springboot项目的详细步骤

这篇文章主要介绍了IDEA基于支付宝小程序搭建springboot项目的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解SpringBoot应用服务启动与安全终止

这篇文章主要介绍了SpringBoot应用服务启动与安全终止,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Boot启动及退出加载项的方法

这篇文章主要介绍了Spring Boot启动及退出加载项的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Data Jpa 自动生成表结构的方法示例

这篇文章主要介绍了Spring Data Jpa 自动生成表结构的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

IDEA中osgi的开发应用指南详解

这篇文章主要介绍了IDEA中osgi的开发应用指南详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详解用maven将dubbo工程打成jar包运行

这篇文章主要介绍了详解用maven将dubbo工程打成jar包运行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解Java合并数组的两种实现方式

这篇文章主要介绍了Java合并数组的两种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

使用Jenkins Pipeline自动化构建发布Java项目的方法

这篇文章主要介绍了使用Jenkins Pipeline自动化构建发布Java项目的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用Maven配置Spring的方法步骤

这篇文章主要介绍了使用Maven配置Spring的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多