SpringBoot2.3整合Flyway实现数据库版本管理

导读:本篇文章讲解 SpringBoot2.3整合Flyway实现数据库版本管理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1. 概述

Flyway用于数据库版本控制,官网这样解释Robust schema evolution across all your environments.With ease, pleasure, and plain SQL。更多介绍,请参阅Flyway官网。Flyway是一个开源的数据库迁移工具,它更倾向于简单和约定优于配置的方式,迁移数据可以写成SQL或者Java程序,支持多种接入方式,例如命令行客户端、Java API、Maven构建、Gradle构建等

2. 核心依赖

新建一个springboot项目,在pom.xml文件中引入核心依赖

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

3. yml配置文件

spring:
  application:
    name: springboot-flyway
  datasource:
    type: com.mysql.cj.jdbc.MysqlDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://xx.xx.xx.xx:3306/springboot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
    username: 用户名
    password: 密码
    hikari:
      minimum-idle: 5 #最小空闲连接数
      idle-timeout: 180000 #空闲连接存活最大时间,默认600000
      maximum-pool-size: 10 #连接池最大连接数
      auto-commit: true #自动提交 默认true
      pool-name: HikariCP #连接池名称
      max-lifetime: 1800000 #连接池最长生命周期,0表示无限生命周期,默认1800000(30分钟)
      connection-timeout: 30000 #连接超时时间,默认30000
      connection-test-query: SELECT 1
  flyway:
    enabled: true #是否开启,默认true
    check-location: true #是否开启路径校验,默认true
    locations:
      - classpath:db/migration #sql文件存放路径,默认classpath:db/migration
    encoding: UTF-8 #编码
    baseline-on-migrate: true #表结构存在,flyway记录表不存在时须开启
    table: flyway_schema_history #flyway记录表名称,默认flyway_schema_history
    baseline-version: 0 #基础版本,默认1
    validate-on-migrate: true #开启sql文件校验,默认true
    clean-disabled: false #是否禁用清除,默认false,生产环境不可清除数据,必须为true
    clean-on-validation-error: false #发生验证错误时,是否执行清除,默认false,生产环境不可开启
    sql-migration-prefix: V #sql文件前缀,默认V
    sql-migration-separator: __ #sql文件分隔符,默认__
    sql-migration-suffixes: .sql #sql文件后缀,默认.sql

注意:sql文件中有版本号为1时,baseline-version版本号配置为0
更多配置可参阅官网配置信息

4. SQL文件

在resources目录下新建db/migration目录,并新建两个sql文件V1__schema.sql和V2__data.sql

CREATE TABLE emp_info (
    id BIGINT UNSIGNED auto_increment NOT NULL COMMENT '主键ID',
    emp_code varchar(30) NULL COMMENT '员工编码',
    emp_name varchar(30) NULL COMMENT '员工名称',
    sex TINYINT NULL COMMENT '性别0:男;1:女;2:未知',
    phone varchar(11) NULL COMMENT '手机号',
    CONSTRAINT emp_info_pk PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
INSERT INTO emp_info (id, emp_code, emp_name, sex, phone) VALUES(NULL, '10001', '张三', 0, '13098783567');

注意:sql文件命名规则是V + 版本号 + 双下划线(__) + 文件名 + .sql

5. 验证

编写主启动类,启动SpringBoot项目
数据库中会新建表flyway_schema_history,表中会记录执行sql的信息。并执行sql文件中的sql
Flyway记录表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/76792.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!