Liquibase的简单使用[通俗易懂]

Liquibase的简单使用[通俗易懂]`LiquiBase`是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。它的目标是提供一种数据库类型无关的解决方案,通过执行schema类型的文件来达到迁移。其有点主要有以下:

  • 支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;
  • 支持多开发者的协作维护;
  • 日志文件支持多种格式,如XML, YAML, JSON, SQL等;
  • 支持多种运行方式,如命令行、Spring集成、Maven插件、Gradle插件等。

更多详情介绍,可以浏览官网doc

之所以选择使用liquibase,原因其实挺尴尬的,由于我不会使用容器化技术,不会写dockfile来运行项目初始化sql脚本,就想有没有什么简单方便的形式,最后看中了liquibase,配置起来确实简单方便。
我是用命令行的形式生成changeLog,然后再集成到springboot中。官网上提供的还有基于ant、maven和服务端的使用的方式,以后再研究。

  1. 下载liquibase的安装包,解压到指定目录下;
    Liquibase的简单使用[通俗易懂]

  2. 通过generateChangeLog生成现有数据库的changeLog文件;

     liquibase --driver=com.mysql.jdbc.Driver --classpath=mysql-connector-java-5.1.27.jar --changeLogFile=./dbchangelog.xml --url="jdbc:mysql://localhost:3306/blog" --username=root --password=root generateChangeLog
    

generateChangeLog命令默认只会创建数据库结构的变更日志文件,如果希望创建插入数据的变更日志文件,可以使用参数diffTypes,该参数包括如下可选项:

  • tables [DEFAULT]表

  • columns [DEFAULT] 列

  • views [DEFAULT] 视图

  • primaryKeys [DEFAULT] 主键

  • indexes [DEFAULT] 索引

  • foreignKeys [DEFAULT]

  • sequences [DEFAULT]

  • data
    例如生成数据:

      liquibase --driver=com.mysql.jdbc.Driver --classpath=mysql-connector-java-5.1.27.jar --changeLogFile=./dbchangelog.xml --url="jdbc:mysql://localhost:3306/blog" --username=root --password=root --diffTypes=data generateChangeLog
    

我分别生成了两个changeLog文件,一个是inti-table.xml; 一个是init-data.xml。
3.项目中配置liquibase
首先在项目中添加支持:

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

通过查看源码,我们能看到默认的配置文件存放的位置:
Liquibase的简单使用[通俗易懂]

这里我没有使用默认的配置,指定了一个自己的路径,只需要在application.properties中添加如下配置:

#liquibase
liquibase.change-log=classpath:/liquibase/master.xml

--master.xml文件内容,通过inclue标签引入了两个changelog,就是之前的表结构和表数据。

<?xml version="1.0" encoding="utf-8"?>
    <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.4.xsd">

    <include file="classpath:liquibase/change_log/init-table.xml" relativeToChangelogFile="false"/>
    <include file="classpath:liquibase/change_log/init-data.xml" relativeToChangelogFile="false"/>
 </databaseChangeLog>

项目中的目录结构如下图所示:
Liquibase的简单使用[通俗易懂]

到此已经位置好了,启动一下项目,控制台打印出liquibase初始化信息,这时候查看数据库,会表现数据库已经初始完毕,后面数据库如果有变动,可以再生成新的changelog文件,再次添加到项目中,达到持续集成的效果。整个项目的源代码已经托管到github上了,可以点击查看

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167005.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微软第一台电脑_世界上第一位皇帝是谁

    微软第一台电脑_世界上第一位皇帝是谁2月9日,历史上的今天,世界上第一位计算机科学博士DavidWheeler出生;BAN逻辑的提出者RogerNeedham出生;人工智能控制论先驱KevinWarwick出生;谷歌发布GoogleBuzz;微软发布SurfacePro。

    2022年10月15日
    4
  • Laravel 中config的用法

    Laravel 中config的用法

    2021年10月23日
    43
  • Android Studio新手教程「建议收藏」

    Android Studio新手教程「建议收藏」AndroidStudio下载选择从AndroidStudio中文组官网进行下载:http://www.android-studio.org/如果电脑网络好,能翻墙的,可以直接从官网首页推荐的google正版链接进行下载,如:android-studio-ide-173.4720617-windows.exeRecommended如果网络不好下载失败,则可以从官方提供的百度网盘方式进行下载:http://www.android-studio.org/index.php/downloa

    2022年4月27日
    70
  • 谈谈5G的信道编码方法

    谈谈5G的信道编码方法最近因为联想的投票引发了轩然大波,让我们不得不审视一下投票的对象:5G的信道编码方式。信道编码是通信技术中非常关键的技术,用于对抗信道上的噪声以及干扰,提高传输的效率。我在通信技术的四大金刚一文中,按重要性将编码技术归为第二位,其中就包含了信道编码。不过,信道编码的效果是有极限的,这就是香农定理所指出的编码极限。在GSM系统中,采用了卷积以及交织等信道编码方式,离编码极限还有一段距…

    2022年5月31日
    159
  • pycharm选中一行代码快捷键_pycharm设置快捷键

    pycharm选中一行代码快捷键_pycharm设置快捷键在写代码的时候,经常为了对齐代码而烦恼,强大的pycharm为我们提供了一个代码自动对齐功能,而且可以使用快捷键完成。快捷键组合是:Ctrl+Alt+L将光标置于需要调整的代码行,或者选择一个区域,按下快捷键,代码就可以自动对齐啦!…

    2022年8月25日
    30
  • 6. SQL 多表查询

    6. SQL 多表查询文章目录1.表的加法1.1UNION去重合并1.2UNIONALL简单合并1.3注意事项2.表的联结JOIN2.1交叉联结CROSSJOIN2.2内联结INNERJOIN2.3左联结LEFTJOIN2.4右联结RIGHTJOIN2.5全联结FULLJOIN2.6小结3.联结的应用3.1案例13.2案例23.3案例34.case表达式4….

    2022年5月7日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号