SpringBoot整合Flyway

目录

介绍:

工作原理

项目创建

pom依赖

 application.properties

 sql文件

 sql文件命名规则

FlywayDemoApplication启动类

 结果

 验证R开头的sql

 结果


介绍:

flyway可以理解为数据库管理工具,类似SVN,团队开发时用于控制数据库更新迭代。

工作原理

官网:https://flywaydb.org/documentation/getstarted/how

项目创建

创建springboot项目flyway-demo

pom依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.flywaydb</groupId>
        <artifactId>flyway-core</artifactId>
    </dependency>

    <!-- 加载jdbc连接数据库 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
    </dependency>
   
</dependencies>

 application.properties

#配置pgsql数据源(可自行改成mysql)  
spring.datasource.url=jdbc:postgresql://localhost:5432/test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.platform=postgres

#flyway 的 clean 命令会删除指定 schema 下的所有 table, 生产务必禁掉。这个默认 false
spring.flyway.clean-disabled=true
#启用或禁用 flyway
spring.flyway.enabled=true
#执行迁移时是否自动调用验证   当你的 版本不符合逻辑 比如 你先执行了 DML 而没有 对应的DDL #会抛出异常
spring.flyway.baseline-on-migrate=true
#是否允许不按顺序迁移 开发建议 true  生产建议 false
spring.flyway.out-of-order=false
#SQL 脚本的目录,多个路径使用逗号分隔 默认值 classpath:db/migration
spring.flyway.locations=classpath:/db/migration
#检查迁移脚本的位置是否存在,默认false
spring.flyway.check-location=true
# 字符编码 默认 UTF-8
spring.flyway.encoding=UTF-8

 sql文件

在resources/db/migration文件夹中放入执行的sql文件

文件名:V1.0.0__test.sql

-- 用户表
CREATE TABLE IF NOT EXISTS public.tb_user (
 user_id int8 NOT NULL, -- 用户id,主键
 user_name varchar(128) NOT NULL, -- 用户名称
 user_age int4 NULL, -- 用户年龄
 create_time timestamp NULL, -- 创建时间
 update_time timestamp NULL, -- 更新时间
 CONSTRAINT pk_tb_user PRIMARY KEY (user_id)
);

 sql文件命名规则

   V+版本号(版本号的数字间以"."或"_"分隔开)+双下划线(用来分隔版本号和描述)+文件描述+后缀名,例如:V1.0.0__test.sql。

        注:版本号不能相同!

1.V开头的文件,每个文件只会被执行一次,常用于创建、修改、删除表;插入、修改数据等

2.R开头的文件,校验和变化了就会执行,格式为R__1.0.1update.sql

FlywayDemoApplication启动类

@SpringBootApplication
public class FlywayDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(FlywayDemoApplication.class, args);
    }

}

 结果

生成flyway_schema_history和tb_user两个表

flyway_schema_history用于记录数据库的更新历史,有数据时,V1.0.0__test.sql就不会再执行了

 验证R开头的sql

在resources/db/migration文件夹中放入执行的sql文件

文件名:R1.0.0__update.sql

ALTER TABLE public.tb_user ADD COLUMN IF NOT EXISTS user_email varchar(128) NULL;
COMMENT ON COLUMN public.tb_user.user_email IS '邮箱';

 重新运行启动类

 结果

tb_user新添字段成功,flyway_schema_history新增一条记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值