Spring Boot 使用 Flyway

本文介绍如何在SpringBoot项目中集成Flyway进行数据库版本管理。通过添加依赖、配置数据库及SQL脚本,Flyway能在应用启动时自动执行数据库迁移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot 使用 Flyway

Flyway 是一个数据库版本管理工具,用于管理数据库操作脚本

添加依赖

compile('org.flywaydb:flyway-core')
compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1')
runtime('mysql:mysql-connector-java')
//runtime('com.h2database:h2')

配置

  • 配置数据库
# H2 数据库
#spring.datasource.url=jdbc:h2:mem:test
#spring.datasource.username=root
#spring.datasource.password=123456
#spring.datasource.driver-class-name=org.h2.Driver

# MySQL 数据库
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/product?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
  • 使用 V_VARSION__DESCRIPTION.sql 方式命名脚本
CREATE TABLE product(
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  price DOUBLE NOT NULL DEFAULT 0
);
  • 将 SQL 脚本放在 resources/db/migration 目录下

使用

此时启动应用,Flyway 将会自动执行脚本进行数据库操作

  • 第一次启动时将会看到如下日志
2018-01-07 21:00:14.932  INFO 5041 --- [           main] o.f.core.internal.util.VersionPrinter    : Flyway 3.2.1 by Boxfuse
2018-01-07 21:00:17.015  INFO 5041 --- [           main] o.f.c.i.dbsupport.DbSupportFactory       : Database: jdbc:mysql://localhost:3306/product?useSSL=false (MySQL 5.7)
2018-01-07 21:00:17.253  INFO 5041 --- [           main] o.f.core.internal.command.DbValidate     : Validated 1 migration (execution time 00:00.133s)
2018-01-07 21:00:17.750  INFO 5041 --- [           main] o.f.c.i.metadatatable.MetaDataTableImpl  : Creating Metadata table: `product`.`schema_version`
2018-01-07 21:00:18.437  INFO 5041 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema `product`: << Empty Schema >>
2018-01-07 21:00:18.437  INFO 5041 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema `product` to version 1.0 - 0001 CREATE PRODUCT
2018-01-07 21:00:19.284  INFO 5041 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 1 migration to schema `product` (execution time 00:01.592s).
  • 再次启动将会看到 Flyway 校验版本
2018-01-07 21:02:09.195  INFO 5061 --- [           main] o.f.core.internal.util.VersionPrinter    : Flyway 3.2.1 by Boxfuse
2018-01-07 21:02:11.327  INFO 5061 --- [           main] o.f.c.i.dbsupport.DbSupportFactory       : Database: jdbc:mysql://localhost:3306/product?useSSL=false (MySQL 5.7)
2018-01-07 21:02:11.618  INFO 5061 --- [           main] o.f.core.internal.command.DbValidate     : Validated 1 migration (execution time 00:00.202s)
2018-01-07 21:02:12.386  INFO 5061 --- [           main] o.f.core.internal.command.DbMigrate      : Current version of schema `product`: 1.0
2018-01-07 21:02:12.447  INFO 5061 --- [           main] o.f.core.internal.command.DbMigrate      : Schema `product` is up to date. No migration necessary.
  • 如果不想 Flyway 执行,可以配置不启用 Flyway
flyway.enabled=false

注意

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值