• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Springboot整合Liquibase初始化数据库

武飞扬头像
crazyK.
帮助1

一、前言  

        liquibase是一个数据库变更的版本控制工具。项目中通过liquibase解析用户编写的liquibase的配置文件,生成sql语句,并执行和记录。执行是根据记录确定sql语句是否曾经执行过,和配置文件里的预判断语句确定sql是否执行。

二、实现

1.项目中加入liquibase依赖

  1.  
    <!-- liquibase -->
  2.  
    <dependency>
  3.  
    <groupId>org.liquibase</groupId>
  4.  
    <artifactId>liquibase-core</artifactId>
  5.  
    </dependency>


2.配置文件中添加Liquibase配置

别忘了在配置文件中配置数据库连接

  1.  
    liquibase:
  2.  
    change-log: classpath:/liquibase/master.xml

3.创建liquibase目录,用于存放要进行初始化的表和数据以及liquibase配置文件

目录如下

data存放数据sql脚本,sql存放建表sql脚本,change_log存放执行记录

学新通

4.在liquibase目录下创建master.xml配置文件 

  1.  
    <?xml version="1.0" encoding="utf-8"?>
  2.  
    <databaseChangeLog
  3.  
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  4.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5.  
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
  6.  
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">
  7.  
    <include file="classpath:/liquibase/change_log/init_table.xml" relativeToChangelogFile="false"/>
  8.  
    <include file="classpath:/liquibase/change_log/init_data.xml" relativeToChangelogFile="false"/>
  9.  
    </databaseChangeLog>

 5.创建change_log和sql脚本

Change_log

changeSet说明日期创建人以及要执行的sql脚本

init_table.xml

  1.  
    <databaseChangeLog
  2.  
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  3.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
  5.  
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
  6.  
     
  7.  
    <!-- id:唯一id author:修改人-->
  8.  
    <changeSet id="20221226-01" author="user">
  9.  
    <sqlFile path="classpath:liquibase/sql/test_liquibase.sql"/>
  10.  
    </changeSet>
  11.  
    </databaseChangeLog>

Init_data.xml

  1.  
    <databaseChangeLog
  2.  
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
  3.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
  5.  
    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
  6.  
    <changeSet id="20221226-01" author="user">
  7.  
    <sqlFile path="classpath:liquibase/data/data_liquibase.sql"/>
  8.  
    </changeSet>
  9.  
    </databaseChangeLog>

sql脚本

test_liquibase.sql

  1.  
    SET NAMES utf8mb4;
  2.  
    SET FOREIGN_KEY_CHECKS = 0;
  3.  
     
  4.  
    -- ----------------------------
  5.  
    -- Table structure for test_liquibase
  6.  
    -- ----------------------------
  7.  
    DROP TABLE IF EXISTS `test_liquibase`;
  8.  
    CREATE TABLE `test_liquibase` (
  9.  
    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  10.  
    `name` varchar(255) DEFAULT NULL COMMENT '名称',
  11.  
    `length` int(11) DEFAULT NULL COMMENT '长度',
  12.  
    PRIMARY KEY (`id`)
  13.  
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  14.  
     
  15.  
    -- ----------------------------
  16.  
    -- Records of test_liquibase
  17.  
    -- ----------------------------
  18.  
    BEGIN;
  19.  
    COMMIT;
  20.  
     
  21.  
    SET FOREIGN_KEY_CHECKS = 1;
学新通

 data_liquibase.sql

  1.  
    SET NAMES utf8mb4;
  2.  
    SET FOREIGN_KEY_CHECKS = 0;
  3.  
     
  4.  
    BEGIN;
  5.  
    INSERT INTO `test_liquibase` (`id`, `name`, `length`) VALUES (1, 'test', 10);
  6.  
    COMMIT;
  7.  
     
  8.  
    SET FOREIGN_KEY_CHECKS = 1;

6.启动项目sql脚本会自动执行

三、验证

我在项目里写了一个接口查询刚才sql脚本插入的数据,实体类和mapper,service就不放出来了,根据数据库字段建就行,持久层用的mybaits-plus。

学新通

调用接口

学新通

也可以直接访问数据库验证

学新通

学新通

databasechangelog和databasechangeloglock是liquibase自动生成的,用于管理数据库变更。 

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgejkkk
系列文章
更多 icon
同类精品
更多 icon
继续加载