SpringBoot集成Liquibase的详细步骤

 更新时间:2024年12月02日 09:12:59   作者:颜淡慕潇  
Liquibase 是一个强大的数据库版本控制工具,能够与 Spring Boot
无缝集成,以简化数据库迁移和管理的过程,以下是从开始集成到最终运行的详细步骤,需要的朋友可以参考下

1. 创建 Spring Boot 项目

首先,您需要创建一个 Spring Boot 项目。您可以使用 Spring Initializr(https://start.spring.io/)来创建项目,选择以下依赖项:

  • Spring Web
  • Spring Data JPA
  • MySQL Driver(或您所使用的数据库驱动)
  • Liquibase Migration

生成基本项目结构

在 Spring Initializr 中选择适当的项目设置后,下载生成的项目并解压缩。

2. 添加 Maven 依赖

如果您在生成项目时没有选择 Liquibase,您需要手动添加 Liquibase 依赖。在 pom.xml 中添加如下依赖:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.x.x</version> <!-- 使用最新版本 -->
</dependency>

确保在依赖项中包含 Spring Data JPA 和数据库驱动,例如 MySQL:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

3. 配置数据库连接

在 src/main/resources/application.properties 或 application.yml 中配置数据库连接信息:

application.properties 示例

spring.datasource.url=jdbc:mysql://localhost:3306/my_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=my_user
spring.datasource.password=my_password
spring.jpa.hibernate.ddl-auto=none
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml

4. 创建变更日志文件

在 src/main/resources/db/changelog 目录下创建 db.changelog-master.xml 文件,并定义数据库变更。

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-4.3.xsd">

    <changeSet id="1" author="authorName">
        <createTable tableName="users">
            <column name="id" type="int">
                <constraints primaryKey="true" autoIncrement="true"/>
            </column>
            <column name="name" type="varchar(100)">
                <constraints nullable="false"/>
            </column>
            <column name="email" type="varchar(100)">
                <constraints unique="true"/>
            </column>
            <column name="created_at" type="timestamp">
                <constraints defaultValueComputed="CURRENT_TIMESTAMP"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="2" author="authorName">
        <addColumn tableName="users">
            <column name="age" type="int"/>
        </addColumn>
    </changeSet>

    <changeSet id="3" author="authorName">
        <createTable tableName="orders">
            <column name="id" type="int">
                <constraints primaryKey="true" autoIncrement="true"/>
            </column>
            <column name="user_id" type="int"/>
            <column name="product" type="varchar(100)">
                <constraints nullable="false"/>
            </column>
            <column name="quantity" type="int">
                <constraints nullable="false"/>
            </column>
            <column name="order_date" type="timestamp">
                <constraints defaultValueComputed="CURRENT_TIMESTAMP"/>
            </column>
            <foreignKeyConstraint baseTableName="orders" baseColumnNames="user_id"
                referencedTableName="users" referencedColumnNames="id" 
                constraintName="fk_user_id"/>
        </createTable>
    </changeSet>

</databaseChangeLog>

5. 运行 Spring Boot 应用

在 IDE 中运行应用程序,或使用命令行:

mvn spring-boot:run

启动应用程序

当 Spring Boot 应用启动时,Liquibase 会自动检测 db.changelog-master.xml 中定义的变更,并应用到数据库中。您将看到控制台输出,显示 Liquibase 正在执行的变更集。

6. 验证数据库变更

使用数据库管理工具(如 MySQL Workbench,DBeaver 等)连接到 my_database,并检查 users 和 orders 表是否已成功创建。

检查表

您可以运行以下 SQL 查询来验证:

SHOW TABLES; -- 查看数据库中的所有表

SELECT * FROM users; -- 查看 users 表
SELECT * FROM orders; -- 查看 orders 表

7. 监控和维护

Liquibase 在数据库中创建了一个 databasechangelog 表,记录所有已应用的变更集。您可以查询此表以获取变更历史:

SELECT * FROM databasechangelog;

8. 回滚变更(可选)

如果需要撤销某次变更,可以使用 Liquibase 的回滚功能。例如,您可以创建一个回滚文件并使用命令行回滚:

liquibase rollbackCount 1

这将回滚最近的一个变更集。

总结

通过上述步骤,您已经成功地将 Liquibase 集成到 Spring Boot 应用中。Liquibase 提供了强大的数据库版本控制和迁移功能,使得管理数据库变更变得简单而高效。通过使用 Liquibase,您可以确保数据库结构与应用代码的同步,并能够轻松管理和维护数据库的演变。

以上就是SpringBoot集成Liquibase的详细步骤的详细内容,更多关于SpringBoot集成Liquibase的资料请关注脚本之家其它相关文章!

相关文章

  • eclipse创建多层包(多级包)全过程

    eclipse创建多层包(多级包)全过程

    这篇文章主要介绍了eclipse创建多层包(多级包)全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SpringCloudGateway 网关登录校验实现思路

    SpringCloudGateway 网关登录校验实现思路

    文章介绍了在微服务架构中使用Spring Cloud Gateway进行登录校验的方法,通过在网关层面进行登录校验,并将用户信息通过请求头传递给下游微服务,解决了每个微服务都需要独立进行登录校验的问题,此外,还讨论了如何在微服务之间传递用户信息
    2024-11-11
  • springboot AutoConfigureAfter控制Bean的注入顺序方法详解

    springboot AutoConfigureAfter控制Bean的注入顺序方法详解

    这个文章主要介绍一下@AutoConfigureAfter在spring框架中的作用,在使用过程中,很多开发人员在使用它的时候都出现了问题,问题比较多的就是它们的注册顺序总不是我们预期的,下面介绍一下正常的使用方法,感兴趣的朋友一起看看吧
    2024-05-05
  • Kotlin 单例实例详解

    Kotlin 单例实例详解

    这篇文章主要介绍了Kotlin 单例实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java字符转码之UTF-8互转GBK具体实现

    Java字符转码之UTF-8互转GBK具体实现

    在Java程序中字符串默认的编码方式是UTF-16编码,因此需要将GBK编码转换为UTF-8编码,主要是为了避免出现乱码的情况,这篇文章主要给大家介绍了关于Java字符转码之UTF-8互转GBK具体实现的相关资料,需要的朋友可以参考下
    2023-11-11
  • java string 转date方法如何实现

    java string 转date方法如何实现

    在开发应用中经常会使用到java string 转date这种不是很常见的做法,本文将以此问题提供详细解决方案,需要了解的朋友可以参考下
    2012-11-11
  • Spring循环依赖正确性及Bean注入的顺序关系详解

    Spring循环依赖正确性及Bean注入的顺序关系详解

    这篇文章主要给大家介绍了关于Spring循环依赖的正确性,以及Bean注入的顺序关系的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-01-01
  • javaweb Servlet开发总结(一)

    javaweb Servlet开发总结(一)

    Servlet是sun公司提供的一门用于开发动态web资源的技术。这篇文章主要介绍了javaweb Servlet开发的第一篇,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Springboot @Configuration与自动配置详解

    Springboot @Configuration与自动配置详解

    这篇文章主要介绍了SpringBoot中的@Configuration自动配置,在进行项目编写前,我们还需要知道一个东西,就是SpringBoot对我们的SpringMVC还做了哪些配置,包括如何扩展,如何定制,只有把这些都搞清楚了,我们在之后使用才会更加得心应手
    2022-07-07
  • Quarkus中的依赖注入DI和面向切面aop编程

    Quarkus中的依赖注入DI和面向切面aop编程

    这篇文章主要为大家介绍了Quarkus中的依赖注入DI和面向切面aop的编程规范思想,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-02-02

最新评论