liquibase-最佳实践,与springboot 整合

Liquibase是一个数据库版本控制工具,支持多种数据库,提供数据库变更的记录、回滚和自动化功能。本文介绍了Liquibase的使用教程,包括如何在SpringBoot项目中集成,生成和应用changelog,以及如何执行数据库回滚。通过打标签进行精细的回滚操作,提高了数据库管理的效率和准确性。

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

平常我们研发工作中对数据的变更,对表结构的修改等操作,为了保证各个不同的环境要维护一个修改记录来记录这边变更记录,或者编写相对应的文;

常规做法会有以下缺点:

  1. 无法保证每个环境都按要求执行
  2. 遇到问题不一定有相对的回滚语句
  3. 无法自动化

为了更好的优化这种问题,我们需要使用更方便记录工具来统一的对数据库的操作记录,实现数据库升级,数据回滚,版本标记等功能;

Liquibase

Liquibase帮助团队跟踪、版本化及部署数据库架构和逻辑修改

liquibase 可以干嘛?

  • 不依赖于特定的数据库,目前支持包括Oracle/Sql Server/DB2/MySql/Sybase/PostgreSQL/Caché等12种数据库,这样在数据库的部署和升级环节可帮助应用系统支持多数据库。
  • 提供数据库比较功能,比较结果保存在XML中,基于该XML你可用Liquibase轻松部署或升级数据库。
  • 以XML存储数据库变化,其中以作者和ID唯一标识一个变化(ChangSet),支持数据库变化的合并,因此支持多开发人员同时工作。
  • 在数据库中保存数据库修改历史(DatabaseChangeHistory),在数据库升级时自动跳过已应用的变化(ChangSet)。
  • 提供变化应用的回滚功能,可按时间、数量或标签(tag)回滚已应用的变化。通过这种方式,开发人员可轻易的还原数据库在任何时间点的状态。
  • 可生成数据库修改文档(HTML格式)
  • 提供数据重构的独立的IDE和Eclipse插件。

 

liquibase使用教程

在项目中引入liquibase过程:

1、父项目 pom.xml 中添加依赖

 

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
        <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>3.5.5</version>
        </dependency>
</dependencies>

 

2、添加liquibase.properties文件

#liquibase
changeLogFile=src/main/resources/liquibase/db.changelog-master.xml
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8
username=root
password=egova

3、父项目 pom中添加liquibase插件


<build>
        <plugins>
            <plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.5.1</version>                
                <configuration>
                <!--properties文件路径,该文件记录了数据库连接信息等-->
                <propertyFile>src/main/resources/liquibase.properties</propertyFile>
                    <propertyFileWillOverride>true</propertyFileWillOverride>
                    <!--生成文件的路径-->
                    <outputChangeLogFile>src/main/resources/liquibase/changelog_dev.xml</outputChangeLogFile>      
                    <!-- <driver>com.mysql.jdbc.Driver</driver>
                    <url>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=utf-8</url>                    
                    <username>root</username>
                    <password>egova</password>-->
                </configuration>
            </plugin>
        </plugins>
 </build>
 

 

4、新建changelog主文件入口: db.changelog-master.xml

 

<?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">

### 关于 IntelliJ IDEA 2025 本的功能发布说明 截至当前时间,尚未有官方发布的关于 IntelliJ IDEA 2025 本的具体功能或特性文档[^4]。然而,基于 JetBrains 的一贯更新模式以及其对开发者体验的关注,可以推测该本可能会引入以下几类改进: #### 1. **性能优化** JetBrains 始终致力于提升产品的运行效率。预计 IntelliJ IDEA 2025 将进一步优化启动速度、内存占用率以及大型项目索引的速度。这些改进将显著提高开发者的生产力。 #### 2. **增强的插件生态系统支持** IntelliJ IDEA 已经通过插件扩展了对多种编程语言的支持,例如 Ruby PHP[^3]。未来本可能继续加强这一生态系统的兼容性功能性,允许更广泛的工具链集成到 IDE 中。 #### 3. **Gradle 集成升** 为了更好地适配现代构建工具的需求,IntelliJ IDEA 可能会提供更加直观的方式来管理 Gradle 本及其依赖关系。用户可以通过检查安装目录下的 `D:\ProgramFiles\JetBrains\IntelliJIDEA<version>\plugins\gradle\lib` 文件夹来验证具体支持哪些 Gradle 本[^2]。新本或将简化此过程并实现自动化检测。 #### 4. **跨平台协作能力** 随着远程工作成为常态,团队成员之间的无缝合作变得尤为重要。因此,预测 IntelliJ IDEA 2025 还会在实时代码审查、多人编辑等方面做出突破性的尝试。 以下是部分伪代码展示如何利用 API 实现某些新增加的功能(假设存在): ```java // 示例:假定有一个新的多用户协同接口 MultiUserCollaborationAPI public class CollaborationExample { public static void main(String[] args) { try (MultiUserSession session = new MultiUserCollaborationAPI().createSession()) { System.out.println("Starting collaborative editing..."); // 添加参与者至共享空间 session.addParticipant("Alice"); session.addParticipant("Bob"); String sharedCodeSnippet = session.getSharedContent(); System.out.println(sharedCodeSnippet); } catch (Exception e) { System.err.println("Error during collaboration setup."); } } } ``` 尽管上述内容仅为合理推断,实际变化仍需等待官方正式公告确认。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值