Springboot 集成 Liquibase
一 、Liquibase官网:
https://www.liquibase.org/
二、Liquibase开发文档:
https://docs.liquibase.com/
三、Liquibase简介
- Liquibase是一种数据库架构更改管理解决方案,使您能够从开发到生产更快、更安全地修订和发布数据库更改。
- Liquibase使用 SQL、XML、JSON 和 YAML 更改日志文件按顺序列出数据库更改。数据库更改具有changesets格式。变更集changesets包含更改类型,更改类型是应用于数据库的操作类型,例如添加列或主键。上下文、标签和前提条件更改日志标记有助于精确控制何时进行数据库更改以及将其部署到哪个数据库环境。
三、Liquibase的优点
- 配置文件支持SQL、XML、JSON 或者 YAML
- 版本控制按序执行
- 可以用上下文控制sql在何时何地如何执行
- 支持schmea的变更
- 根据配置文件自动生成sql语句用于预览
- 可重复执行迁移
- 可插件拓展
- 可回滚
- 可兼容14中主流数据库如oracle,mysql,pg等,支持平滑迁移
- 支持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_devchangeLogFile = /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: truechange-log: classpath:liquibase/master.xml
启动项目自动执行liquibase,扫描master.xml 文件,执行include 节点下changelog文件初始化数据库。
<!--master.xml文件-->
<databaseChangeLogxmlns="http://www.liquibase.org/xml/ns/dbchangelog"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangeloghttp://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
标签 | 说明 |
---|---|
sql | sql语句 |
sqlFile | sql文件 |
6、其他
标签 | 说明 |
---|---|
insert | 插入数据 |
update | 更新数据 |
delete | 删除数 |
empty | 空操作 |
executeCommand | 执行命名 |
alterSequence | 修改序列 |
customChange | 自定义操作,需自己实现 |
loadData | 导入csv数据至已存在的表中 |
loadUpdateData | 导入csv数据至表中,表不存在则新建 |
mergeColumns | 合并列 |
modifyDataType | 修改数据类型 |
output | 输出日志 |
setColumnRemarks | 增加列说明 |
setTableRemarks | 增加表说明 |
stop | 停止liquibase |
tagDatabase | 打标签用于将来回滚 |
Springboot 集成 Liquibase相关推荐
- SpringBoot集成Liquibase
一.前言 Liquibase 是一个用于跟踪,管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据) 都保存在XML文件中,便于版本控制. liquibase说白了就是一个 ...
- SpringBoot集成Actuator端点配置
1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...
- [Liquibase]集成liquibase的两种形式
文章目录 一.springboot方式集成 1.引入依赖 pom.xml 2.application.yml配置 3.master.xml主文件 4.数据修改文件 4.1xml形式 4.2 sql形式 ...
- 【flyway】SpringBoot集成Flyway
目录 Flaway是什么? SpringBoot集成Flyway --gradle项目 注意 Flaway是什么? Flyway是一款数据库迁移(migration)工具.简单点说,就是在你部署应用的 ...
- SpringBoot 集成Flowable设计器(Flowable-ui)
一.项目场景: 提示:使用版本6.7.0 公司使用前后端项目分离,前端使用bpmn插件生成bpmn xml文件,后端解析处理数据.今天主要介绍后端集成flowable设计器的过程中遇到的问题. 如需了 ...
- SpringBoot结合Liquibase实现数据库变更管理
<从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...
- 使用liquibase进行数据库迁移(Postgresql/Mysql)——springboot整合Liquibase以及使用maven命令执行Liquibase同步更新数据
文章目录 一.什么是Liquibase? 1.liquibase的优点 2.liquibase的基本概念 3.官网地址 二.SpringBoot整合Liquibase 1.简介 2.项目结构 3.测试 ...
- SpringBoot集成Mybatis项目实操
本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...
- Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源
全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...
最新文章
- AndroidManifest.xml文件详解
- PowerDesigner中如何给字符串字段设置默认值 .
- python编程入门指南上下百度云-Python编程入门指南(上下册)
- stm32跑马灯实验
- linux常见系统目录,Linux系统中常见目录有哪些?linux运维学习中心
- SAP Spartacus的user id
- 39. 组合总和020(思路+详解)
- 解决bash: mysql: command not found 的方法【linux mysql命令 】
- linux安装pl sql,Linux上安装配置InstantClient及64位系统Pl/SQL配置
- ArcEngine由点生成TIN
- py2neo database
- matlab练习程序(图像序列合成视频)
- lda 协方差矩阵_数据降维算法总结(LDAamp;PCA)
- Linux命令解释之df
- IntelliJ IDEA代码格式化,代码超出规定宽度自动换行
- 视频md5修改器苹果手机
- 明解c语言 练习,《明解C语言》示例代码和练习代码[第8章]
- 十六进制转二进制(转)
- 偏移量范围计算机组成,计算机组成原理-郑秋梅 - 习题
- 微信小程序 之修改switch组件尺寸大小
热门文章
- 408需要背诵的知识点
- 联合循环——22(GIS室内的局放以及SF6检测设备)
- 过山车css动画,如何使用CSS实现过山车loader的动画效果
- AtCoder Beginner Contest 260 A~F 题解
- 黑马笔记之HTML和CSS
- NOIP2017D1T3-逛公园
- c语言cstdio头文件,C++头文件----cstdio(stdio.h)
- 洛谷 P4147 玉蟾宫 P1169 [ZJOI2007]棋盘制作(求最大子矩阵)
- 国内各大域名注册机构域名管理面板登陆地址
- PHP版Sorry 真香GIF在线生成网站搭建