Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理功能
Liquibase概述
Liquibase 是一個(gè)開(kāi)源的數(shù)據(jù)庫(kù)變更管理工具,用于跟蹤、版本化、和管理數(shù)據(jù)庫(kù)結(jié)構(gòu)(如表、字段、索引等)的變更。它的目的是使數(shù)據(jù)庫(kù)變更的過(guò)程更加透明、可控制、自動(dòng)化,避免開(kāi)發(fā)團(tuán)隊(duì)在多個(gè)環(huán)境中手動(dòng)執(zhí)行相同的數(shù)據(jù)庫(kù)變更腳本。
Liquibase 支持多種數(shù)據(jù)庫(kù)(MySQL、PostgreSQL、Oracle、SQL Server、H2 等),并能夠通過(guò) XML、YAML、JSON 或 SQL 文件來(lái)定義數(shù)據(jù)庫(kù)變更。
主要特點(diǎn)
- 版本控制:將數(shù)據(jù)庫(kù)變更與代碼同步管理,避免手動(dòng)更改數(shù)據(jù)庫(kù)結(jié)構(gòu)。
- 自動(dòng)化遷移:在不同環(huán)境(開(kāi)發(fā)、測(cè)試、生產(chǎn)等)中自動(dòng)應(yīng)用數(shù)據(jù)庫(kù)變更。
- 可回滾性:Liquibase 提供了回滾機(jī)制,可以回到之前的數(shù)據(jù)庫(kù)版本。
- 支持多種格式:支持 XML、YAML、JSON 等格式來(lái)描述變更。
- 集成方便:Liquibase 可以集成到 CI/CD 流程中,或者與 Spring Boot 等框架配合使用,輕松管理數(shù)據(jù)庫(kù)版本。
工作機(jī)制
Liquibase 使用一個(gè)名為 changelog 的文件來(lái)描述數(shù)據(jù)庫(kù)的所有變更。這個(gè)文件記錄了所有執(zhí)行過(guò)的數(shù)據(jù)庫(kù)變更集合(changeSets)。每個(gè) changeSet 都有一個(gè)唯一的 ID 和作者標(biāo)識(shí),用來(lái)追蹤該變更。
Liquibase 會(huì)通過(guò) changelog 文件自動(dòng)管理數(shù)據(jù)庫(kù)的版本和變更。它會(huì)在每次應(yīng)用變更時(shí),通過(guò)一個(gè) DATABASECHANGELOG 表記錄哪些變更已經(jīng)應(yīng)用過(guò)了
與SpringBoot結(jié)合使用
由于我這邊項(xiàng)目上使用的是xml方式,就用xml方式進(jìn)行示例,其余方式的方法,大家感興趣的可以自行前往官網(wǎng)查看文檔。
傳送門(mén):Liquibase Documentation
引入依賴(lài)
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.7.9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.21.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version> <!-- 或者根據(jù)需要使用適合的版本 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
</build>
</project>配置文件
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 10
liquibase:
change-log: classpath:liquibase/platform/changeSet.xml
enabled: true創(chuàng)建 Liquibase 變更集文件
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<include file="liquibase/platform/change/change01.xml"/>
</databaseChangeLog>具體的變更集文件
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="1" author="bob">
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="active" type="boolean" defaultValueBoolean="true"/>
</createTable>
</changeSet>
</databaseChangeLog>常用命令
liquibase update: 應(yīng)用所有未執(zhí)行的數(shù)據(jù)庫(kù)變更。
liquibase rollback: 回滾數(shù)據(jù)庫(kù)到指定的 changeSet 或版本。
liquibase status: 查看當(dāng)前數(shù)據(jù)庫(kù)的變更狀態(tài)。
liquibase generateChangeLog: 根據(jù)現(xiàn)有數(shù)據(jù)庫(kù)生成初始的 changeLog 文件。
總結(jié)
Liquibase 是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)管理工具,它幫助你通過(guò)自動(dòng)化管理數(shù)據(jù)庫(kù)的變更、版本控制、和回滾,簡(jiǎn)化了開(kāi)發(fā)中的數(shù)據(jù)庫(kù)遷移工作。通過(guò)在 Spring Boot 中集成 Liquibase,可以更高效地管理數(shù)據(jù)庫(kù)結(jié)構(gòu)和版本,確保開(kāi)發(fā)團(tuán)隊(duì)的協(xié)作更加流暢。在項(xiàng)目中,Liquibase 可以和 Git 等版本控制工具配合使用,確保數(shù)據(jù)庫(kù)結(jié)構(gòu)變更的透明性和可追溯性。
到此這篇關(guān)于Liquibase結(jié)合SpringBoot使用實(shí)現(xiàn)數(shù)據(jù)庫(kù)管理的文章就介紹到這了,更多相關(guān)SpringBoot數(shù)據(jù)庫(kù)管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
string類(lèi)和LocalDateTime的相互轉(zhuǎn)換方式
這篇文章主要介紹了string類(lèi)和LocalDateTime的相互轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Java使用Scanner類(lèi)進(jìn)行文件的讀取方式
這篇文章主要介紹了Java使用Scanner類(lèi)進(jìn)行文件的讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。2022-11-11
Java實(shí)現(xiàn)把圖片處理到指定大小的操作方法
項(xiàng)目開(kāi)發(fā)中,經(jīng)常遇到圖片上傳功能,發(fā)現(xiàn)如果圖片比較大時(shí),在查看、預(yù)覽、下載速度會(huì)特別慢,考慮到浪費(fèi)流量以及文件服務(wù)器的存儲(chǔ)空間,決定在后端優(yōu)化處理完再上傳,所以本文給大家介紹了使用Java把圖片處理到指定大小的操作方法,需要的朋友可以參考下2025-03-03
Springboot實(shí)現(xiàn)多線(xiàn)程注入bean的工具類(lèi)操作
這篇文章主要介紹了Springboot實(shí)現(xiàn)多線(xiàn)程注入bean的工具類(lèi)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
Java設(shè)計(jì)模式之狀態(tài)模式State Pattern詳解
這篇文章主要介紹了Java設(shè)計(jì)模式之狀態(tài)模式State Pattern,狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為。這個(gè)對(duì)象看上去就像是改變了它的類(lèi)一樣2022-11-11
Spring+MongoDB實(shí)現(xiàn)登錄注冊(cè)功能
這篇文章主要為大家詳細(xì)介紹了Spring+MongoDB實(shí)現(xiàn)登錄注冊(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Java實(shí)現(xiàn)遞歸刪除菜單和目錄及目錄下所有文件
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)遞歸刪除菜單和刪除目錄及目錄下所有文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2025-03-03
詳解spring boot starter redis配置文件
spring-boot-starter-Redis主要是通過(guò)配置RedisConnectionFactory中的相關(guān)參數(shù)去實(shí)現(xiàn)連接redis service。下面通過(guò)本文給大家介紹在spring boot的配置文件中redis的基本配置,需要的的朋友參考下2017-07-07
Java數(shù)組的遍歷與求和知識(shí)點(diǎn)
本篇文章給大家總計(jì)了Java數(shù)組的遍歷與求和的知識(shí)點(diǎn)以及需要注意的地方,需要的朋友參考學(xué)習(xí)下。2018-02-02

