栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot整合Liquibase

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot整合Liquibase

SpringBoot整合Liquibase 1、Liquibase简介

​ LiquiBase官网地址

​ LiquiBase 是一个数据库重构和迁移的开源框架,通过日志的方式来记录数据库的变更。通过执行日志文件中的修改,将数据库更新或回滚到达一致的状态。

2、SpringBoot整合LiquiBase 2.1 pom引入依赖


    org.liquibase
    liquibase-core




    mysql
    mysql-connector-java
    8.0.18

2.2 创建配置文件
  1. master.xml


    
    

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

  1. init_table.xml


  	
    
        
    
		
    
        
    

如果数据库结构发生了变化,再添加一个,指定对应的sql文件

  1. default.sql
-- test.test definition

CREATE TABLE `test2` (
                        `test_id` bigint(20) NOT NULL AUTO_INCREMENT,
                        `code` varchar(20) DEFAULT '0',
                        `name` varchar(255) DEFAULT '',
                        `createDate` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                        PRIMARY KEY (`test_id`),
                        KEY `codeandname` (`code`,`name`,`createDate`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
  1. table_2022052301.sql

    -- test.test3 definition
    
    CREATE TABLE `test3` (
                             `test_id` bigint(20) NOT NULL AUTO_INCREMENT,
                             `code` varchar(20) DEFAULT '0',
                             `name` varchar(255) DEFAULT '',
                             `createDate` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
                             PRIMARY KEY (`test_id`),
                             KEY `codeandname` (`code`,`name`,`createDate`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;
    
  2. init_data.xml


    
        
    

  1. init_data.sql
-- test.test2 definition
INSERT INTO test.test2 (test_id, code, name, createDate) VALUES(24, '24', '24', NULL);
  1. 文件结构
2.3 yml配置
# 应用服务 WEB 访问端口
server:
  port: 8080
# 应用名称
spring:
  application:
    name: demo-liquibase-base
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true
    username: root
    password: root
  liquibase:
    change-log: classpath:/liquibase/master.xml
#    default-schema: st_jtlsp_interlib_sync # pgsql使用
#    liquibase-schema: st_jtlsp_interlib_sync # pgsql使用
2.4项目启动

项目启动前,需要将对应的数据库test创建好

项目在启动的过程中,就会执行未执行过的liquibase脚本,运行结果如下:

DATABASECHANGELOG表、DATABASECHANGELOGLOCK表是liquibase自带的表

表名说明
DATABASECHANGELOG记录的是每一次表修改的记录,里面会详细记录操作的类型和操作。
DATABASECHANGELOGLOCK用于确保两台计算机不会同时尝试修改数据库,锁库。
2.5 备注
  1. master.xml可以和change_log中的文件进行合并,只要yml中的配置正确

    spring:
    	liquibase:
        change-log: classpath:/liquibase/master.xml
    
  2. changeLog除了指定sql脚本,还可以通过标签的方式,具体可参考官网文档,示例:

    			
    	
    	
    	
    				
    	
    		
    			
    			
    			
    		
    	
    
    
3、基于liquibase对数据库的回滚操作

暂时不会

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937204.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号