springboot 项目整合 flyway

在阅读 jeecgboot 文档的时候,发现该框架是通过 flyway 工具进行数据库版本管理的,我也是第一次知道这个工具,网上搜索一番,写一篇笔记。

arduino 复制代码
flyway官网: https://flywaydb.org/

一、什么是flyway呢?

进入官网 documentation.red-gate.com/flyway/quic... ,可以看到官方的解释。

二、flyway 的工作原理是怎样的?

这是我在阿里文档中看到的一个解释说明,简单明了。

  • 创建一个迁移记录表 flyway_schema_history
  • 应用启动的时候扫描resources下的特定sql文件
  • 将扫描到的sql文件进行排序
  • 与迁移记录表中的数据进行对比,并执行sql文件

三、sprinboot 项目整合 flyway

知道这个工具的好处,接下来看看怎么在自己的 springboot 项目中整合这个工具。

markdown 复制代码
项目 version 信息:
    springboot:2.7.18
    jdk:8
    mysql:5.7.36
    flyway:6.0.8

1、创建项目、添加依赖

flyway版本对本地数据库版本有一定的要求,所以依赖版本不要选错。

xml 复制代码
依赖如下:
<!-- jpa依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- flyway依赖-->
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>6.0.8</version>
</dependency>
<!-- mysql依赖-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
    <scope>runtime</scope>
</dependency>

插件:
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <version>6.0.8</version>
</plugin>

2、配置 application 配置文件

yaml 复制代码
spring:
# flyway配置
  flyway:
    baseline-on-migrate: true
datasource:
  url: jdbc:mysql://localhost:3306/test20240407?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
  driver-class-name: com.mysql.jdbc.Driver
  username: your_username
  password: your_password
jpa:
  show-sql: true

3、创建sql文件

在 resource 目录下,创建 db 文件夹,在 db 文件夹下创建 migration 文件夹,在 migration 文件夹下创建 .sql 文件,这里创建了 V1.0.1__migration.sql 文件。

bash 复制代码
注:flyway默认是在 resource.db.migration 文件夹下遍历 sql 脚本文件的,如果按照上述创建文件目录,则不需要在 application.yml 中进行配置,否则需要配置如下:
spring.flyway.locations: classpath:resource下的目录 (如:classpath:db/migration)

4、创建数据库

这里创建了 test20240407 数据库,信息如下:

5、运行程序

运行程序,可以看到已经在数据库中创建 person 表和 flyway_schema_history 表,其中 flyway_schema_history 表用于记录版本,相当于一个版本记录器。

相关推荐
2601_961901701 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
Lost of 程序猿1 小时前
ASP.NET Core API 幂等性设计深度实战:从一次重复申领事故说起
后端·asp.net
QQ_21696290962 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理4 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒4 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
2601_962128414 小时前
SpringBoot篇(缓存层)
java·spring boot·缓存
大辉狼_音频架构5 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构5 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
大辉狼_音频架构5 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端
运行时异常6 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端