Springboot 集成 Liquibase

一 、Liquibase官网

https://www.liquibase.org/

二、Liquibase开发文档

https://docs.liquibase.com/

三、Liquibase简介

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

三、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.liquibasegroupId>
            <artifactId>liquibase-coreartifactId>
            <version>4.17.2version>
  dependency>

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

    <plugin>
       <groupId>org.liquibasegroupId>
         <artifactId>liquibase-maven-pluginartifactId>
         <configuration>
             <propertyFileWillOverride>truepropertyFileWillOverride>
             <propertyFile>${basedir}/src/main/resources/liquibase.propertiespropertyFile>
         configuration>
         <executions>
             <execution>
                 <goals>
                     <goal>updategoal>
                 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文件初始化数据库。


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

    

    <!--  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 命令:
Springboot 集成 Liquibase_第2张图片
使用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

标签 说明
sql sql语句
sqlFile sql文件

6、其他

标签 说明
insert 插入数据
update 更新数据
delete 删除数
empty 空操作
executeCommand 执行命名
alterSequence 修改序列
customChange 自定义操作,需自己实现
loadData 导入csv数据至已存在的表中
loadUpdateData 导入csv数据至表中,表不存在则新建
mergeColumns 合并列
modifyDataType 修改数据类型
output 输出日志
setColumnRemarks 增加列说明
setTableRemarks 增加表说明
stop 停止liquibase
tagDatabase 打标签用于将来回滚

你可能感兴趣的:(spring,boot,java,数据库,python)