SpringBoot學習筆記(十二:Liquibase )
文章目錄
一、Liquibase 簡介
1、主要特點:
2、使用方式
3、變更集合
二、Springboot整合Liquibase
1、依賴
2、配置
2、master.xml
3、test.xml
4、運行效果
一、Liquibase 簡介
LiquiBase(從 2006 年開始投入使用)是一種免費開源的工具,可以實現不同數據庫版本之間的遷移。本質上是一個執行sql腳本的工具。
1、主要特點:
支持幾乎所有主流的數據庫,如MySQL、PostgreSQL、Oracle、Sql Server、DB2等
支持多開發者的協作維護;
日志文件支持多種格式;如XML、YAML、SON、SQL等
支持多種運行方式;如命令行、Spring 集成、Maven 插件、Gradle 插件等
2、使用方式
要開始使用 LiquiBase,需要以下四個步驟:
創建一個數據庫 變更日志(change log)文件。
在變更日志文件內部創建一個 變更集(change set)。
通過命令行或構建腳本對數據庫運行變更集。
檢驗數據庫中的變更。
3、變更集合
隨著新特性添加到了應用程序中,經常需要變更數據庫的結構或修改表約束。LiquiBase 提了超過 30 種數據庫重構支持。
例如:
添加列
1
2
3
4
5
創建表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
二、Springboot整合Liquibase
1、依賴
springboot內置了對liquibase整合的支持,只需要在項目中引入liquibase的依賴,進行配置即可:
1
2
3
4
5
6
7
8
9
10
11
12
依賴 spring-boot-starter-jdbc 目的是為了讓 liquibase 能夠獲得 datasource。
2、配置
appllication.properties:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/liquibase_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root # spring.liquibase.enabled=true spring.liquibase.change-log=classpath:/liquibase/master.xml # spring.liquibase.change-log=classpath:/liquibase/changelog-master.yaml
1
2
3
4
5
6
7
更多配置:
spring.liquibase.change-log 配置文件的路徑,默認值為 classpath:/db/changelog/db.changelog-master.yaml
spring.liquibase.check-change-log-location 檢查 change log的位置是否存在,默認為true.
spring.liquibase.contexts 用逗號分隔的運行環境列表。
spring.liquibase.default-schema 默認數據庫 schema
spring.liquibase.drop-first 是否先 drop schema(默認 false)
spring.liquibase.enabled 是否開啟 liquibase(默認為 true)
spring.liquibase.password 數據庫密碼
spring.liquibase.url 要遷移的JDBC URL,如果沒有指定的話,將使用配置的主數據源.
spring.liquibase.user 數據用戶名
spring.liquibase.rollback-file 執行更新時寫入回滾的 SQL文件
2、master.xml
1
2
3
4
5
6
7
8
9
10
官方是支持 xml,yaml,json 三種格,這里也可以寫成yaml格式或者json格式,配置文件里修改 spring.liquibase.change-log 即可。官方對比: https://www.liquibase.org/documentation/changes/sql_file.html
databaseChangeLog: # 支持 yaml 格式的 SQL 語法 - changeSet: id: 1 author: Levin changes: - createTable: tableName: person columns: - column: name: id type: int autoIncrement: true constraints: primaryKey: true nullable: false - column: name: first_name type: varchar(255) constraints: nullable: false - column: name: last_name type: varchar(255) constraints: nullable: false - changeSet: id: 2 author: Levin changes: - insert: tableName: person columns: - column: name: first_name value: Marcel - column: name: last_name value: Overdijk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
3、test.xml
在test.xml中寫了建表的集合:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
4、運行效果
運行主類,從日志中可以看到Liquibase 在幫我們執行定義好的SQL,如果是第一次啟動,那么數據庫會存在databasechangelog 和 databasechangeloglock兩個表
test.xml中的sql是創建了一個user表:
本文為學習筆記類博客,學習資料來源見參考!
參考:
【1】:數據庫版本管理工具Liquibase
【2】:讓開發自動化實現自動化數據庫遷移
【3】:3.5 springboot與liquibase整合
【4】:Liquibase官方文檔
【5】:一起來學SpringBoot | 第二十四篇:數據庫管理與遷移(Liquibase)
Spring Boot 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。