Springboot 集成 Liquibase

一 、Liquibase官网

https://www.liquibase.org/

二、Liquibase开发文档

https://docs.liquibase.com/

三、Liquibase简介

  • Liquibase是一种数据库架构更改管理解决方案,使您能够从开发到生产更快、更安全地修订和发布数据库更改。
  • Liquibase使用 SQL、XML、JSON 和 YAML 更改日志文件按顺序列出数据库更改。数据库更改具有changesets格式。变更集changesets包含更改类型,更改类型是应用于数据库的操作类型,例如添加列或主键。上下文、标签和前提条件更改日志标记有助于精确控制何时进行数据库更改以及将其部署到哪个数据库环境。
    在这里插入图片描述

三、Liquibase的优点

  1. 配置文件支持SQL、XML、JSON 或者 YAML
  2. 版本控制按序执行
  3. 可以用上下文控制sql在何时何地如何执行
  4. 支持schmea的变更
  5. 根据配置文件自动生成sql语句用于预览
  6. 可重复执行迁移
  7. 可插件拓展
  8. 可回滚
  9. 可兼容14中主流数据库如oracle,mysql,pg等,支持平滑迁移
  10. 支持schema方式的多租户(multi-tenant)

四、Springboot 集成 Liquibase

1. pom文件引入依赖

  <dependency>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-core</artifactId>
            <version>4.17.2</version>
  </dependency>

2. 添加maven plugin,集成liquibase命令

    <plugin>
       <groupId>org.liquibase</groupId>
         <artifactId>liquibase-maven-plugin</artifactId>
         <configuration>
             <propertyFileWillOverride>true</propertyFileWillOverride>
             <propertyFile>${basedir}/src/main/resources/liquibase.properties</propertyFile>
         </configuration>
         <executions>
             <execution>
                 <goals>
                     <goal>update</goal>
                 </goals>
             </execution>
         </executions>
     </plugin>

3. resources 下新建liquibase.properties文件:

#要连接库配置信息
driver = oracle.jdbc.driver.OracleDriver
url = jdbc:oracle:thin:@//10.0.0.0:1521/ORCL
username = cloud_dev
password = cloud_dev

changeLogFile = /src/main/resources/liquibase/changelog/init_table.sql
#生成文件的路径
outputChangeLogFile = src/main/resources/liquibase/temp/changelog.oracle.xml  
#输出文件编码
outputFileEncoding=UTF-8
#若是须要在父项目中配置子项目共享的LiquiBase配置,而各个子项目能够定义本身的配置,并覆盖父项目中的配置
propertyFileWillOverride = off
#执行的时候是否显示详细的参数信息
verbose = true
#选择生成数据库需要保留类型
diffTypes = tables, views, columns, indexs,foreignkeys, primarykeys, uniqueconstraints, data

4. yaml增加liquibase

  liquibase:
   enabled: true
   change-log: classpath:liquibase/master.xml 

启动项目自动执行liquibase,扫描master.xml 文件,执行include 节点下changelog文件初始化数据库。

<!--master.xml文件-->
<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">

    <!--
    1:includeAll 标签可以把一个文件夹下的所有 changelog 都加载进来。如果单个加载可以用 include。
    2:includeAll 标签里有两个属性:path 和 relativeToChangelogFile。
        2.1:path (在 include 标签里是 file):指定要加载的文件或文件夹位置
        2.2:relativeToChangelogFile :文件位置的路径是否相对于 root changelog 是相对路径,默认 false,即相对于 classpath 是相对路径。
    -->

    <!-- <includeAll path="/sql" relativeToChangelogFile="false"/>
    <include file="classpath:liquibase/temp/changelog.oracle.xml" relativeToChangelogFile="false"/>
    <include file="classpath:liquibase/temp/changelog_init.xml" relativeToChangelogFile="false"/>
    <include file="classpath:liquibase/temp/changelog_sm_v1.0.xml.xml" relativeToChangelogFile="false"/>
    <include file="classpath:liquibase/temp/changelog_lm_v1.0.xml.xml" relativeToChangelogFile="false"/>
</databaseChangeLog>

5. maven 命令:
在这里插入图片描述
使用maven命令 :liquibase:generateChangeLog 根据liquibase.properties文件配置逆向生成outputChangeLogFile文件。

6. 常用maven命令:

命令说明
liquibase:generateChangeLog逆向生成ChangeLog文件,支持yaml、xml、json、sql格式
liquibase:update更新changelog 到数据库
liquibase:updateSQL预更新,检查sql执行情况
liquibase:dbDoc基于现有数据库和变更日志生成文档

五、ChangeLog 中changeSet组成标签

1、add

标签说明
addAutoIncrement将已存在的列改为自增列
addColumn增加列
addDefaultValue增加列的默认值
addForeignKeyConstraint增加外键
addLookupTable创建外键的关联表
addNotNullConstraint增加非空值约束
addPrimaryKey增加主键
addUniqueConstraint增加唯一值约束

2、create

标签说明
createIndex创建索引
createProcedure创建存储过程
createSequence创建序列
createTable创建表
createView创建视图

3、drop

标签说明
dropAllForeignKeyConstraints删除全部外键约束
dropColumn删除列
dropDefaultValue删除默认值
dropForeignKeyConstraint删除某一外键约束
dropNotNullConstraint删除空值约束
dropPrimaryKey删除主键
dropProcedure删除存储过程
dropSequence删除序列
dropTable删除表
dropUniqueConstraint删除唯一约束
dropView删除视图

4、rename

标签说明
renameColumn重命名列
renameSequence重命名序列
renameTable重命名表
renameView重命名视图

5、sql

标签说明
sqlsql语句
sqlFilesql文件

6、其他

标签说明
insert插入数据
update更新数据
delete删除数
empty空操作
executeCommand执行命名
alterSequence修改序列
customChange自定义操作,需自己实现
loadData导入csv数据至已存在的表中
loadUpdateData导入csv数据至表中,表不存在则新建
mergeColumns合并列
modifyDataType修改数据类型
output输出日志
setColumnRemarks增加列说明
setTableRemarks增加表说明
stop停止liquibase
tagDatabase打标签用于将来回滚
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot集成Liquibase可以帮助你管理数据库的版本控制和迁移。Liquibase是一个开源的数据库变更管理工具,它使用XML或YAML文件来描述数据库的变更,并提供了一些命令行工具和Java API来执行这些变更。 下面是将Liquibase集成Spring Boot项目的步骤: 1. 添加依赖:在你的项目的`pom.xml`文件中,添加Liquibase和相应的数据库驱动的依赖。例如,如果你使用MySQL数据库,可以添加以下依赖: ```xml <dependency> <groupId>org.liquibase</groupId> <artifactId>liquibase-core</artifactId> <version>4.5.0</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.27</version> </dependency> ``` 2. 创建Liquibase配置文件:在项目的资源目录下创建一个`liquibase.properties`或`liquibase.yml`文件,用于配置Liquibase的连接信息和变更文件的位置。例如,创建一个`liquibase.properties`文件,并添加以下内容: ```properties # 数据库连接信息 url=jdbc:mysql://localhost:3306/mydb username=root password=your_password # 变更文件位置 changeLogFile=classpath:db/changelog.xml ``` 3. 创建变更文件:在项目的资源目录下创建一个`db/changelog.xml`文件(根据你在配置文件中指定的位置),用于描述数据库的变更。你可以在该文件中定义创建表、添加列等操作。以下是一个简单的例子: ```xml <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.5.xsd"> <changeSet id="1" author="your_name"> <createTable tableName="example_table"> <column name="id" type="bigint" autoIncrement="true"> <constraints primaryKey="true" nullable="false"/> </column> <column name="name" type="varchar(255)"/> </createTable> </changeSet> </databaseChangeLog> ``` 4. 启用Liquibase:在你的Spring Boot应用程序的启动类上添加`@EnableLiquibase`注解,以启用Liquibase的自动配置。例如: ```java @SpringBootApplication @EnableLiquibase public class YourApplication { public static void main(String[] args) { SpringApplication.run(YourApplication.class, args); } } ``` 现在,当你运行Spring Boot应用程序时,Liquibase会自动检查数据库的变更,并根据变更文件进行相应的更新操作。 希望对你有所帮助!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值