springboot jpa sql打印_springboot集成数据库版本管理工具Flyway

我们开发的软件有很好的版本控制、明确的部署流程,但是我们的数据库呢?长时间以来,一直依赖于手动执行sql表结构和数据更改,没有自动化的解决方案。

cee5da9de244472d882ededad91dfbd6

本次要介绍的便是数据库版本控制工具Flayway,记录数据库所有版本演化和状态变更。启动项目便检查当前数据库版本,如若不是最新便进行Migration 操作,保证各位小伙伴开发基于同一数据库版本,也保证了各个环境如dev、sit、uat数据库一致。

Flyway原理

项目集成Flyway启动后,会首先检查数据库中是否存在Flayway核心记录表flyway_schema_history,如若不存在便创建它。紧接着,扫描项目SQL文件,然后据版本号进行排序,并按顺序记录执行SQL。执行相应SQL后,表记录会更新。当Flyway再次扫描SQL文件时,发现不是最新文件,会忽略本条SQL。这样只要每次创建的SQL文件高于上次版本,下一次启动项目的时候,Flayway会自动更新数据库,实现数据库版本管理。

(sql脚本的格式:V+版本号+双下划线+描述)

4492b2e0e32747b08473f3357ed60861

flyway_schema_history

详细原理介绍请参考Flyway官网:

https://flywaydb.org/getstarted/how

如何使用

创建springboot工程,以mysql数据库为例,使用JPA,引入Flyway依赖。

注意:

1. springboot2.x对flyway版本要求为5.x

2. MySQL 5.1不再被Flayway Community版本支持,但是Flyway Enterprise版本仍然支持

org.flywaydb flyway-coreorg.flywaydb flyway-maven-plugin

注意:在同时使用Flayway和JPA的时候,配置文件中不可再配置ddl-auto: update。配置文件如下:

spring: datasource: driverClassName: com.mysql.jdbc.Driver username: your username password: your password url: jdbc:mysql://localhost:3306/test jpa: database: mysql show-sql: true

在resource目录下创建/db/migration文件夹,放入创建表SQL,注意命名格式:

V1__create_student_tb.sql

use test;CREATE TABLE student_tb ( id int(10) NOT NULL AUTO_INCREMENT, student_name varchar(10) NOT NULL, student_class varchar(50) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

启动springboot工程,flyway会自动执行以上SQL并记录数据库迁移版本。下次有SQL更新时,命名SQL文件名版本大于V1即可。

其他配置

flyway.baseline-on-migrate:假如已经存在数据库表和记录,设置此参数为true,默认为falseflyway.baseline-version:执行基准迁移时候版本,默认为1flyway.enabled:是否开启flyway,默认为trueflyway.validate-on-migrate:执行迁移时,是否校验,默认为trueflyway.encoding:设置编码,默认为UTF-8

喜欢就点个爱心吧!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值