一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專(zhuān)注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

2022-01-07 12:58懶蟲(chóng)蟲(chóng)~ Java教程

Flyway是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)版本管理工具,并且極力主張“約定大于配置”,簡(jiǎn)單、專(zhuān)注、強(qiáng)大。接下來(lái)通過(guò)本文給大家介紹SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的方法,感興趣的朋友一起看看吧

 

一、Flyway簡(jiǎn)介

Flyway是一款數(shù)據(jù)庫(kù)遷移(migration)工具。簡(jiǎn)單點(diǎn)說(shuō),就是在你部署應(yīng)用的時(shí)候,幫你執(zhí)行數(shù)據(jù)庫(kù)腳本的工具。Flyway支持SQL和Java兩種類(lèi)型的腳本,你可以將腳本打包到應(yīng)用程序中,在應(yīng)用程序啟動(dòng)時(shí),由Flyway來(lái)管理這些腳本的執(zhí)行,這些腳本被Flyway稱(chēng)之為migration。

就目前而言,我們部署應(yīng)用的流程大概是這樣的:

開(kāi)發(fā)人員將應(yīng)用程序打包、按順序匯總并整理數(shù)據(jù)庫(kù)升級(jí)腳本
DBA拿到數(shù)據(jù)庫(kù)升級(jí)腳本檢查、備份、執(zhí)行,以完成數(shù)據(jù)庫(kù)升級(jí)
應(yīng)部署人員拿到應(yīng)用部署包,備份、替換,以完成應(yīng)用程序升級(jí)
引入Flyway之后的應(yīng)用部署流程大概是這樣的:

開(kāi)發(fā)人員將應(yīng)用程序打包
應(yīng)部署人員拿到應(yīng)用部署包,備份、替換,以完成應(yīng)用程序升(Flyway將自動(dòng)執(zhí)行升級(jí)/備份腳本)。

 

二、SpringBoot集成使用

 

1.pom.xml引入依賴(lài)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.3.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>demo</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- mysql 依賴(lài) -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- 數(shù)據(jù)庫(kù)版本管理 依賴(lài) -->
		<dependency>
			<groupId>org.flywaydb</groupId>
			<artifactId>flyway-core</artifactId>
		</dependency>

		<!-- 數(shù)據(jù)庫(kù)訪問(wèn)依賴(lài) -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<!-- 自動(dòng)生成get,set方法 依賴(lài) -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

2.application.properties

# 端口
server.port=8082

# 數(shù)據(jù)源
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

# flyway    注:可以完全不用配置
## sql 腳本的位置,默認(rèn)為 classpath:db/migration。可手動(dòng)指定
spring.flyway.locations=classpath:db
##  指定數(shù)據(jù)源,如果沒(méi)有指定的話,將使用配置的主數(shù)據(jù)源
spring.flyway.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=PRC&useSSL=false
## Flyway 管理的 Schema 列表,區(qū)分大小寫(xiě)。默認(rèn)連接對(duì)應(yīng)的默認(rèn) Schema
## 如果這里明確指定了庫(kù)名,那么在 spring.flyway.url 連接中指定的庫(kù)名將無(wú)效
spring.flyway.schemas=test1
## 用戶(hù)名
spring.flyway.user=root
## 密碼
spring.flyway.password=root
## 開(kāi)啟,默認(rèn)開(kāi)啟
spring.flyway.enabled=true

 

3.resources創(chuàng)建db數(shù)據(jù)庫(kù)腳本文件夾

V0.1.0__init_table.sql

-- 創(chuàng)建表
create table t_startAlarm
(
    id      int(100) primary key not null auto_increment,
    name     varchar(100),
    type      varchar(100)
)

V0.1.1__init_table.sql

-- 初始化數(shù)據(jù)
INSERT INTO t_startAlarm ( id , name , type ) VALUES
("1","電飯煲","用來(lái)蒸飯")

V0.1.2__init_table.sql

-- 初始化數(shù)據(jù)
INSERT INTO t_startAlarm ( id , name , type ) VALUES
("2","電飯煲2","用來(lái)蒸飯2")

 

4.啟動(dòng)DemoApplication主啟動(dòng)類(lèi)

4.1只有V0.1.0__init_table.sql和V0.1.1__init_table.sql。
項(xiàng)目啟動(dòng),F(xiàn)lyway 會(huì)自動(dòng)創(chuàng)建一個(gè) flyway_schema_history 表,這個(gè)表用來(lái)記錄數(shù)據(jù)庫(kù)的更新歷史。

有了這條記錄,下次再啟動(dòng)項(xiàng)目,V0.1.1__init_table.sql 這個(gè)腳本文件就不會(huì)執(zhí)行了,因?yàn)橄到y(tǒng)知道這個(gè)腳本已經(jīng)執(zhí)行過(guò)了,如果你還想讓 V0.1.1__init_table.sql 腳本再執(zhí)行一遍,需要手動(dòng)刪除 flyway_schema_history 表中的對(duì)應(yīng)記錄,那么項(xiàng)目啟動(dòng)時(shí),這個(gè)腳本就會(huì)被執(zhí)行了。

注意:

我們?cè)诙x腳本的時(shí)候,除了 V 字開(kāi)頭的腳本之外,還有一種 R 字開(kāi)頭的腳本,V 字開(kāi)頭的腳本只會(huì)執(zhí)行一次,而 R字開(kāi)頭的腳本,只要腳本內(nèi)容發(fā)生了變化,啟動(dòng)時(shí)候就會(huì)執(zhí)行。

使用了 Flyway之后,如果再想進(jìn)行數(shù)據(jù)庫(kù)版本升級(jí),就不用該以前的數(shù)據(jù)庫(kù)腳本了,直接創(chuàng)建新的數(shù)據(jù)庫(kù)腳本,項(xiàng)目在啟動(dòng)時(shí)檢測(cè)了有新的更高版本的腳本,就會(huì)自動(dòng)執(zhí)行,這樣,在和其他同事配合工作時(shí),也會(huì)方便很多。因?yàn)檎N覀兌际菑腉it 上拉代碼下來(lái),不拉數(shù)據(jù)庫(kù)腳本,這樣要是有人更新了數(shù)據(jù)庫(kù),其他同事不一定能夠收到最新的通知,使用了 Flyway就可以有效避免這個(gè)問(wèn)題了。

所有的腳本,一旦執(zhí)行了,就會(huì)在 flyway_schema_history表中有記錄,如果你不小心搞錯(cuò)了,可以手動(dòng)從 flyway_schema_history 表中刪除記錄,然后修改 SQL腳本后再重新啟動(dòng)(生產(chǎn)環(huán)境不建議)。

測(cè)試數(shù)據(jù)庫(kù)中結(jié)果:

SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法
SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

添加V0.1.2__init_table.sql,測(cè)試數(shù)據(jù)庫(kù)中結(jié)果

SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

 

三、項(xiàng)目整體結(jié)構(gòu)

代碼地址鏈接: SpringbootFlyway

SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的操作方法

參考文章

https://www.cnblogs.com/wangzh1guo/articles/13834706.html

到此這篇關(guān)于SpringBoot使用Flyway進(jìn)行數(shù)據(jù)庫(kù)管理的文章就介紹到這了,更多相關(guān)SpringBoot Flyway數(shù)據(jù)庫(kù)管理內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/jike11231/article/details/120343725

延伸 · 閱讀

精彩推薦
  • Java教程Java實(shí)現(xiàn)搶紅包功能

    Java實(shí)現(xiàn)搶紅包功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)搶紅包功能,采用多線程模擬多人同時(shí)搶紅包,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫(xiě)文件寫(xiě)不進(jìn)去或缺失數(shù)據(jù)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java8中Stream使用的一個(gè)注意事項(xiàng)

    Java8中Stream使用的一個(gè)注意事項(xiàng)

    最近在工作中發(fā)現(xiàn)了對(duì)于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個(gè)非常重要的注意點(diǎn),所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7482021-02-04
  • Java教程升級(jí)IDEA后Lombok不能使用的解決方法

    升級(jí)IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級(jí),尋思已經(jīng)有好久沒(méi)有升過(guò)級(jí)了。升級(jí)完畢重啟之后,突然發(fā)現(xiàn)好多錯(cuò)誤,本文就來(lái)介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程xml與Java對(duì)象的轉(zhuǎn)換詳解

    xml與Java對(duì)象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對(duì)象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程20個(gè)非常實(shí)用的Java程序代碼片段

    20個(gè)非常實(shí)用的Java程序代碼片段

    這篇文章主要為大家分享了20個(gè)非常實(shí)用的Java程序片段,對(duì)java開(kāi)發(fā)項(xiàng)目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 免费看日韩 | 水野朝阳厨房系列在线观看 | 久99视频精品免费观看福利 | 国产精品久久久久久久午夜片 | 国产亚洲自愉自愉 | 青草欧美 | 日本 视频 在线 | 久久偷拍国2017 | 十六以下岁女子毛片免费 | 日本-区二区三区免费精品 日本破处 | 2023最新伦理片 | 俺去啦最新 | 日产精品卡一卡2卡三卡乱码工厂 | 97成网| 69热视频| 免费岛国 | 国产福利自产拍在线观看 | 九九九好热在线 | 国产男女乱淫真视频全程播放 | 亚洲精品一区在线观看 | 99在线视频精品费观看视 | 好大好长好紧爽免费 | 亚洲精品在线看 | 咪咪爱网友自拍 | 国产成人精品一区二区阿娇陈冠希 | 国产91亚洲精品 | 欧美精品综合一区二区三区 | 男人天堂黄色 | 久久99精品国产自在自线 | 国产特级 | 成人影院在线看 | 亚洲精品午夜视频 | 啊皇上你好大要知画 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 四虎影音| 国产91精品在线播放 | 王晶经典三级 | 欧美福利在线观看 | 肉搏潘金莲三级18春 | 91制片厂果冻星空传媒3xg | 亚洲精品成人A8198A片漫画 |