SpringBoot集成liquibase
Liquibase 是一个用于跟踪、管理和应用数据库变化的开源的数据库重构工具。它将所有数据库的变化(包括结构和数据)都保存在 XML 文件中,便于版本控制。
前置准备
- 创建一个SpringBoot项目
- 开发环境
- Spring Boot-2.7.14�
- Java(jdk8)
- Mysql-8.0.27
开始集成
引入坐标
- mysql-connector存在两个版本:
com.mysql.mysql-connector-j
和mysql.mysql-connector-java
�具体是哪个,可以根据spring-boot-dependencies-2.7.14.pom
中的定义 - liquibase的
LiquibaseAutoConfiguration
�配置,是必须要有数据库连接的,所以引入mybatis-plus
。也可以引入其他的,例如:jpa
<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.14</version>
</parent>
<groupId>com.tzcxyh</groupId>
<artifactId>lulu</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>lulu</name>
<description>lulu</description>
<properties>
<java.version>1.8</java.version>
<mybatis-plus.version>3.5.0</mybatis-plus.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- lombook依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--mysql-->
<!--spring-boot-dependencies中已经指定版本-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- liquibase -->
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>
<!-- Mybatis-Plus Start -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- Mybatis-Plus End -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
新建一个数据库
在application.properties中添加配置
#liquibase的启始master.xml配置
spring.liquibase.change-log=classpath:liquibase/master.xml
# mysql 8.x
spring.datasource.driver-class-name: com.mysql.cj.jdbc.Driver
spring.datasource.url: jdbc:mysql://127.0.0.1:3306/lulu-auth?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull
spring.datasource.username: root
spring.datasource.password: 123456
配置liquibase的xml
在resources
文件夹下面新建liquibase/master.xml
。用于管理执行的数据库操作集合
<databaseChangeLog
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
<!-- 指定执行的文件 -->
<include file="liquibase/selfChangeLog.xml"/>
</databaseChangeLog>
启动项目,观察数据库变化
- 在数据库中新建了两个表
DATABASECHANGELOG
和DATABASECHANGELOGLOCK
- 在
DATABASECHANGELOG
中记录了以<changeSet>
为单位的日志,并记录了MD5防止修改