java开发flyway的方法

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自动配置类

到此这篇关于java开发flyway的方法的文章就介绍到这了,更多相关java开发flyway内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于Flyway实现简化Spring Boot项目部署

    1.什么是 Flyway 我们在公司做开发时,由于项目需求的变化,或者前期设计缺陷,导致在后期需要修改数据库,这应该是一个比较常见的事情,如果项目还没上线,你可能把表删除了重新创建,但是如果项目已经上线了,就不能这样简单粗暴了,我们需要通过 SQL 脚本在已有数据表的基础上进行升级. 目前 Java 这块,想要对数据库的版本进行管理主要有两个工具: Flyway Liquibase 两个工具各有千秋,但是核心功能都是数据库的版本管理,这里主要来看 Flyway.就像我们使用 Git 来管理代码版

  • SpringBoot整合Flyway的方法(数据库版本迁移工具)

    Flyway是什么 Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以实现数据的Migrate.Migrations可以写成SQL脚本,也可以写在Java代码中,Flyway还支持Spring Boot. 简介 在团队开发当中,有可能每个人都是使用自己本地的数据库.当数据库的表或者字段更新时,往往需要告知团队的其他同事进行更新. Flyway数据库版本迁移工具,目的就是解决该问题而诞生的(我自己想的

  • Java 中Flyway的使用详解

    Flyway的使用 环境:SpringBoot 2.0.4.RELEASE 为什么要用Flyway? 开发人员在合作的时候经常遇到以下场景: 1.开发人员A在自己的本地数据库做了一些表结构的改动,并根据这些改动调整了DAO层的代码,然后将代码上传到svn或git等版本控制服务器上.此时如果开发人员B拉取了A的代码改动,在运行项目的时候很可能会报错,因为B的本地SQL数据库并没有修改. 2.在项目上线的时候,当服务器拉取的版本控制服务器的最新修改后,必须同时运行SQL数据库的修改脚本,如果忘了跑数

  • 浅谈SpringBoot之开启数据库迁移的FlyWay使用

    本文介绍了SpringBoot开启数据库迁移的FlyWay使用,分享给大家,具体如下: 一,首先我先了解下FlyWay是如何运转的. 最简单的方案是将Flyway指向一个空数据库. 它将尝试找到其元数据表.当数据库为空时,Flyway将不会找到它, 而是创建它.您现在拥有一个名为SCHEMA_VERSION的单个空表的数据库 : 该表将用于跟踪数据库的状态.之后,Flyway将开始扫描应用程序的文件系统或类路径进行迁移.它们可以用Sql或Java编写. 然后根据其版本号对迁移进行排序,并按顺序应

  • SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    Flyway是一款开源的数据库版本管理工具,它更倾向于规约优于配置的方式. 第一步:pom.xml添加maven依赖 <!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core --> <dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <versi

  • 详解Spring Boot中使用Flyway来管理数据库版本

    如果没有读过上面内容的读者,有兴趣的可以一阅.在上面的使用JdbcTemplate一文中,主要通过spring提供的JdbcTemplate实现对用户表的增删改查操作.在实现这个例子的时候,我们事先在MySQL中创建了用户表.创建表的过程我们在实际开发系统的时候会经常使用,但是一直有一个问题存在,由于一个系统的程序版本通过git得到了很好的版本控制,而数据库结构并没有,即使我们通过Git进行了语句的版本化,那么在各个环境的数据库中如何做好版本管理呢?下面我们就通过本文来学习一下在Spring B

  • Flyway详解及Springboot集成Flyway的详细教程

    Flayway是一款数据库版本控制管理工具,,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里:不仅支持Command Line和java api ,也支持Build构建工具和Spring boot,也可以在分布式环境下能够安全可靠安全地升级数据库,同时也支持失败恢复. Flyway最核心的就是用于记录所有版本演化和状态的MetaData表,Flyway首次启动会创建默认名为SCHEMA_VERSION的元素局表. 表中保存了版本,描述,要执行的sql脚本

  • java开发flyway的方法

    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,那

  • Java开发环境配置方法

    下面通过图文并茂的方式给大家讲解下Java开发环境配置,具体内容如下: 对于JAVA新手来说,刚开始要学JAVA,而自己的电脑上毫无与JAVA开发有关的环境,应该如何进行配置呢? (安卓新手也需要JAVA开发环境) 第一步,下载.安装java JRE JRE (Java Runtime Environment),即Java运行环境,是运行JAVA程序所必须的环境的集合,包含各种类库. 1.Jre官方下载; http://www.oracle.com/technetwork/java/javase

  • java开发的工厂方法模式及抽象工厂验证示例

    目录 工厂方法模式示例 抽象工厂模式验证 结论 工厂方法模式示例 开发一个数据格式转换工具,将不同数据源如:txt.excel等格式文件,转换为XML格式输出,需考虑今后其他格式的文件也需要转换为xml格式的扩展性,利用设计模式的有关知识进行设计. 解决思路,使用工厂方法模式完成该功能的设计,设计类图如下: 代码结构如下: 代码如下: public interface Creator { Convertor getConvertor(); } public class ExcelConverto

  • VsCode搭建Java开发环境的方法

    1:在 Visual Studio Code 中打开扩展视图(Ctrl+Shift+X),输入关键词java.spring分别下载Java开发插件包和springboot插件包 2:配置参数 点击设置按钮,进入设置选项,配置用户设置(文件->首选项->设置 Ctrl+,) { "editor.minimap.enabled": false, "window.zoomLevel": 0, "workbench.iconTheme": &

  • Java开发中读取XML与properties配置文件的方法

    相关阅读: 使用Ajax进行文件与其他参数的上传功能(java开发) 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完全分离. 2)互操作性强. 3)规范统一. 4)支持多种编码. 5)可扩展性强. 3.如何解析XML文档: XML在不同的语言中解析XML文档都是一样的,只不过实现的语法不一样,基本的解析方式有两种,一种是SAX方式,是按照XML文件的顺序一

  • java开发https请求ssl不受信任问题解决方法

    本文主要讨论的是java开发https请求ssl不受信任的解决方法,具体分析及实现代码如下. 在java代码中请求https链接的时候,可能会报下面这个错误 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unab

  • java开发中使用IDEA活动模板快速增加注释的方法

    在java开发中,类.接口.方法,都需要进行注释,注释内容如图: 注释中的基本元素有:描述.作者.创建日期.可增加元素有:修改日期.修改内容.业务详情.参数列表与描述.返回值列表与描述等.使用IDEA增加活动模板,可快速在代码中加入注释,进入[文件]->[设置]->[编辑器]->[活动模板] 在user分类下新增模板为**,点击[编辑变量],增加注释中所使用到的变量即可.变量也可以根据下方函数内容指定.如下图: 设置完毕后,在代码中输入**后敲回车即可生成模板文本中的内容,注释则先输入/

  • Java开发深入分析讲解二叉树的递归和非递归遍历方法

    目录 前言 1.递归遍历 2.非迭代遍历 3.二叉树的统一迭代法 前言 二叉树的遍历方法分为前序遍历,中序遍历,后续遍历,层序遍历. 1.递归遍历 对于递归,就不得不说递归三要素:以前序遍历为例 递归入参参数和返回值 因为要打印出前序遍历节点的数值,所以参数里需要传入List在放节点的数值,除了这一点就不需要在处理什么数据了也不需要有返回值,所以递归函数返回类型就是void,代码如下: public void preorder(TreeNode root, List<Integer> resu

  • 利用 Docker 构建简单的 java 开发编译环境的方法详解

    目前 Java 语言的版本很多,除了常用的 Java 8,有一些遗留项目可能使用了 Java 7,也可能有一些比较新的的项目使用了 Java 10 以上的版本.如果想切换自己本地的 Java 开发环境,折腾起来还是需要花费一些时间的,并且日后在不同版本间切换每次都要折腾一次. Docker 的出现让我们维护不同版本的开发编译环境变得简单,如果你还不知道什么是 Docker 可以看看 Docker 入门介绍.我们可以采用两种方式来构建 java 的开发环境,一种是在容器内编译运行,一种是在容器外编

随机推荐