使用Liquibase在Spring Boot项目中实现数据库版本控制

174 阅读2分钟

在开发基于Spring Boot的应用程序时,数据库是不可或缺的一部分。随着项目的不断迭代和演进,数据库结构也会随之变化。为了有效地管理数据库结构的变更并保证数据的一致性,一种常用的方式是使用数据库版本控制工具。Liquibase是一个流行的开源工具,它可以帮助开发人员实现数据库变更的追踪和管理。本文将介绍如何在Spring Boot项目中使用Liquibase来实现数据库版本控制。

1. Liquibase简介

Liquibase是一个基于Java的数据库变更管理工具,它允许开发人员以声明性的方式描述数据库结构的变更,并自动处理这些变更的应用。通过使用Liquibase,开发人员可以轻松地跟踪数据库结构的变更历史,并在不同环境之间进行数据库结构的同步。

2. 在Spring Boot项目中集成Liquibase

添加依赖

首先,在Spring Boot项目的pom.xml文件中添加Liquibase的依赖:

<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
    <version>4.24.0</version>
</dependency>
<!--配置mybatis 进行加入数据-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
    <exclusions>
        <exclusion>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.5.5</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

3. 配置文件

spring:
  liquibase:
    change-log: classpath:db/changelog/db.changelog-master.yaml
  datasource:
    url: jdbc:mysql://localhost:3306/liq
    username: root
    password: 1234

4. 配置 Liquibase

mysql 下是我们需要执行的脚本,db.changelog-master.yaml 是配置做什么,怎么做

image.png

db.changelog-master.yaml 文件信息

databaseChangeLog:
  # 包含 continew-admin_table.sql 文件中定义的数据库表创建操作
  - include:
      file: db/changelog/mysql/continew-admin_table.sql

最后我们配置一下启动执行创建数据库的操作

@Configuration
public class LiquibaseConfig {

    /**
     * 配置 Liquibase bean,用于数据库变更管理。
     *
     * @param dataSource 数据源,用于连接数据库
     * @return SpringLiquibase 对象
     */
    @Bean
    public SpringLiquibase liquibase(DataSource dataSource) {
        // 创建 SpringLiquibase 对象
        SpringLiquibase liquibase = new SpringLiquibase();
        // 设置数据源
        liquibase.setDataSource(dataSource);
        // 设置数据库变更日志文件路径
        liquibase.setChangeLog("classpath:/db/changelog/db.changelog-master.yaml");
        // 返回 SpringLiquibase 对象
        return liquibase;
    }
}