1. 创建表

drop database if exists mybatis;
create database mybatis;
use mybatis;create table mybatis.CUSTOMERS (ID bigint not null primary key,NAME varchar(15) not null,EMAIL varchar(128) not null,PASSWORD varchar(8) not null,  PHONE int ,  ADDRESS varchar(255),SEX char(1) ,IS_MARRIED bit,DESCRIPTION text,IMAGE blob,BIRTHDAY date,REGISTERED_TIME timestamp
);select * from mybatis.CUSTOMERS;

2. 配置pom.xml

<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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>com.example</groupId><artifactId>middleware</artifactId><version>0.0.1-SNAPSHOT</version></parent><artifactId>liquibase</artifactId><properties><jdbc.driver>com.mysql.cj.jdbc.Driver</jdbc.driver><jdbc.url>jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8&amp;serverTimezone=GMT&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</jdbc.url><jdbc.username>root</jdbc.username><jdbc.password>1234</jdbc.password></properties><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.5.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.liquibase</groupId><artifactId>liquibase-maven-plugin</artifactId><version>3.5.3</version><configuration><!--指定执行主文件 --><changeLogFile>${basedir}/src/main/resources/conf/liquibase/master_changelog.xml</changeLogFile><diffChangeLogFile>${basedir}/src/main/resources/conf/liquibase/changelog/${maven.build.timestamp}_changelog.xml</diffChangeLogFile><outputChangeLogFile>${basedir}/src/main/resources/conf/liquibase/changelog/changelog_original.xml</outputChangeLogFile><driver>${jdbc.driver}</driver><url>${jdbc.url}</url><username>${jdbc.username}</username><password>${jdbc.password}</password><dropFirst>false</dropFirst><defaultSchemaName /><referenceUrl>hibernate:spring:com.jaguar.myapp.domain?dialect=&amp;hibernate.ejb.naming_strategy=org.springframework.boot.orm.jpa.hibernate.SpringNamingStrategy</referenceUrl><verbose>true</verbose><logging>debug</logging><!-- 是否需要弹出确认框 --><promptOnNonLocalDatabase>false</promptOnNonLocalDatabase><!--输出文件的编码 --><outputFileEncoding>UTF-8</outputFileEncoding><!--执行的时候是否显示详细的参数信息 --><verbose>true</verbose><!--是否每次都重新加载properties --><propertyFileWillOverride>true</propertyFileWillOverride><rollbackTag>${project.version}</rollbackTag><tag>${project.version}</tag></configuration></plugin></plugins></build><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.11</version></dependency><dependency><groupId>org.liquibase</groupId><artifactId>liquibase-core</artifactId><version>3.6.1</version></dependency></dependencies>
</project>

3. 根据数据库反向生成changeLog文件    mvn liquibase:generateChangeLog

创建空changelog_original.xml

<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd">
</databaseChangeLog>

执行 mvn liquibase:generateChangeLog

changelog_original.xml

<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"><changeSet author="kd (generated)" id="1529903520054-1"><createTable tableName="customers"><column name="ID" type="BIGINT"><constraints nullable="false"/></column><column name="NAME" type="VARCHAR(15)"><constraints nullable="false"/></column><column name="EMAIL" type="VARCHAR(128)"><constraints nullable="false"/></column><column name="PASSWORD" type="VARCHAR(8)"><constraints nullable="false"/></column><column name="PHONE" type="INT"/><column name="ADDRESS" type="VARCHAR(255)"/><column name="SEX" type="CHAR(1)"/><column name="IS_MARRIED" type="BIT(1)"/><column name="DESCRIPTION" type="TEXT"/><column name="IMAGE" type="BLOB"/><column name="BIRTHDAY" type="date"/><column name="REGISTERED_TIME" type="TIMESTAMP(26)"/></createTable></changeSet><changeSet author="kd (generated)" id="1529903520054-2"><addPrimaryKey columnNames="ID" constraintName="PRIMARY" tableName="customers"/></changeSet>
</databaseChangeLog>

4. 清空当前数据库,包括liquibase的版本信息 mvn liquibase:dropAll

5. 将xml的改变更新到数据库     mvn liquibase:update

(1) 指定执行主文件 master_changelog.xml

<?xml version="1.0" encoding="utf-8"?>
<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/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"><!-- mvn liquibase:update --><include file="conf/liquibase/changelog/00000000000000_initial_common.xml" relativeToChangelogFile="false"/>
</databaseChangeLog>

(2) 初始化的文件 00000000000000_initial_common.xml

拷贝自changelog_original.xml

两个重要改动

a) 定义了autoIncrement, 关联

b) 将TIMESTAMP(26) 改为TIMESTAMP

<?xml version="1.0" encoding="utf-8"?>
<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/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"><property name="now" value="now()" dbms="mysql,h2"/><property name="now" value="current_timestamp" dbms="postgresql"/><property name="now" value="sysdate" dbms="oracle"/><property name="autoIncrement" value="true" dbms="mysql,h2,postgresql,oracle"/><changeSet author="kd (generated)" id="1529903520054-1"><createTable tableName="customers"><column name="ID" type="BIGINT" autoIncrement="${autoIncrement}"><constraints primaryKey="true" nullable="false"/></column><column name="NAME" type="VARCHAR(15)"><constraints nullable="false"/></column><column name="EMAIL" type="VARCHAR(128)"><constraints nullable="false"/></column><column name="PASSWORD" type="VARCHAR(8)"><constraints nullable="false"/></column><column name="PHONE" type="INT"/><column name="ADDRESS" type="VARCHAR(255)"/><column name="SEX" type="CHAR(1)"/><column name="IS_MARRIED" type="BIT(1)"/><column name="DESCRIPTION" type="TEXT"/><column name="IMAGE" type="BLOB"/><column name="BIRTHDAY" type="date"/><column name="REGISTERED_TIME" type="TIMESTAMP"/></createTable></changeSet><changeSet id="00000000000000-05" author="shj"><sqlFile path="conf/liquibase/preloaddata/dml.sql"/></changeSet>
</databaseChangeLog>

(3) dml.sql

Insert into mybatis.CUSTOMERS (NAME,EMAIL,PASSWORD, PHONE,  ADDRESS,SEX,IS_MARRIED,DESCRIPTION,IMAGE,BIRTHDAY,REGISTERED_TIME)
values ('customer','customer@customer.com','1234',123,'customer address','女',1,'customer description',null,now(),now());

执行结果

alter table mybatis.CUSTOMERS add test varchar(25);

再次update...

6. 根据数据库反向生成changeLog文件

执行 mvn liquibase:dbDoc

最常用的命令说明:

update(将xml的改变更新到数据库)

rollback(回滚到某一版本或者某一时刻,必须要带上rollbackTag参数)

dbDoc (生成数据库文档)

dropAll(慎用,清空当前数据库,包括liquibase的版本信息)

generateChangeLog(根据数据库反向生成changeLog文件)

tag(为当前数据库打上标签)

转载于:https://www.cnblogs.com/xiang--liu/p/9710284.html

liquibase使用相关推荐

  1. java程序中日志jar包的使用_java – 如何使用jar文件中的Liquibase changelog

    我目前在我的application.properties中有以下内容: liquibase.change日志=类路径:/db/changelog/db.changelog-master.xml 该文件 ...

  2. mysql duplicate jpa_SpringBoot Jpa 双数据源mysql + oracle + liquibase+参考源码

    spring: # 数据库配置 datasource: primary: jdbc-url: jdbc:mysql://localhost:3306/mes-dev?useUnicode=true&a ...

  3. springboot整合liquibase入门实例

    1,新建springboot工程时选中mysql和liquibase,这样就不用在pom中添加dependence了 2,项目目录结构 3.pom文件依赖,依赖 spring-boot-starter ...

  4. Spring Boot 简单集成 Liquibase

    Liquibase 是一个用于跟踪.管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据)都保存在 changelog文件中,便于版本控制,它的目标是提供一种数据库类型无关 ...

  5. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  6. 报错, liquibase.exception.ValidationFailedException: Validation Failed

    问题: 2020-11-12 15:15:14.082 WARN 15972 --- [ main] ConfigServletWebServerApplicationContext : Except ...

  7. Spring Boot学习总结(27)—— Spring Boot中两个数据库迁移工具Liquibase和Flyway的比较

    前言 当您需要使用Java创建Web应用程序或API时,可以使用RESTful,SOAP或GraphQL.无论您是查看同步HTTP,异步还是反应式,队列中的消息或来自Kafka的事件,都很难超越Spr ...

  8. liquibase mysql_Liquibase MySQL:语法错误附近'????????????????'

    我正尝试使用以下参数运行liquibase(默认参数,仅修改路径): liquibase --driver=com.mysql.jdbc.Driver \ --classpath=mysql-conn ...

  9. jhipster使用liquibase修改一个表的一个字段

    1.首先编辑changelog目录下的.xml文件 <?xml version="1.0" encoding="utf-8"?> <datab ...

  10. Liquibase常用操作

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

最新文章

  1. (深入理解)强化学习中Model-based和Model-free的区别是什么
  2. atmega8 例程:T1定时器 快速PWM
  3. 面试题31.连续子数组的最大和
  4. FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?
  5. 树莓派获4500万美元融资,估值已达5亿美元,去年创下了710万台销量纪录
  6. JNI与底层调用-1
  7. 反向传播算法最全解读,机器学习进阶必看!
  8. ubuntu安装postman
  9. python dicom 器官分割_python+opencv阈值分割
  10. typename的双重语义
  11. ie浏览器打字不显示文字框命令
  12. doubango TURN Data Indication报文代码
  13. 计算机中汉字字库分为哪两种,常用的汉字字库有GB2312字库和GBK字库两种。 (转)...
  14. android 本地存储数组,安卓与iphone自带浏览器对本地存储的支持
  15. JAVA笔试面试题集锦05
  16. Incorrect argument type to variable ‘max_allowed_packet‘解决方法
  17. 网页数据库服务器连接超时,数据库服务器连接超时
  18. 模仿斗地主玩法实现扑克牌的分发
  19. 电脑连不上网,排查原因
  20. 2021数字四川创新大赛盛夏再起航

热门文章

  1. 微信小程序 滑块验证小demo
  2. 杭州计算机学校餐费,「分享」杭州2021年哪所计算机学校最好就业_附收费明细...
  3. c语言编程题没有sln,使用CMake生成sln项目和VS工程遇到的问题
  4. matlab+oil+painting,paint画笔的一些方法和应用 oil painting brush | Firefly's space
  5. stm32使用数学库-基于stm32cubeide
  6. HGP:STM32的用标准库函数自己编写的关于设置系统时钟72Mhz的函数
  7. 干货复试详细教程——从联系导师→自我介绍的复试教程
  8. mysql cas_CAS SSO一直無法連線到MYSQL
  9. 以AI破局,智能决策技术在企业呆滞物料管理中的创新和实践
  10. 首长,Redis 性能优化十三条军规立好了,请过目~