Springboot整合Liquibase初始化数据库
一、前言
liquibase是一个数据库变更的版本控制工具。项目中通过liquibase解析用户编写的liquibase的配置文件,生成sql语句,并执行和记录。执行是根据记录确定sql语句是否曾经执行过,和配置文件里的预判断语句确定sql是否执行。
二、实现
1.项目中加入liquibase依赖
-
<!-- liquibase -->
-
<dependency>
-
<groupId>org.liquibase</groupId>
-
<artifactId>liquibase-core</artifactId>
-
</dependency>
2.配置文件中添加Liquibase配置
别忘了在配置文件中配置数据库连接
-
liquibase:
-
change-log: classpath:/liquibase/master.xml
3.创建liquibase目录,用于存放要进行初始化的表和数据以及liquibase配置文件
目录如下
data存放数据sql脚本,sql存放建表sql脚本,change_log存放执行记录
4.在liquibase目录下创建master.xml配置文件
-
-
<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>
5.创建change_log和sql脚本
Change_log
changeSet说明日期创建人以及要执行的sql脚本
init_table.xml
-
<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.1.xsd">
-
-
<!-- id:唯一id author:修改人-->
-
<changeSet id="20221226-01" author="user">
-
<sqlFile path="classpath:liquibase/sql/test_liquibase.sql"/>
-
</changeSet>
-
</databaseChangeLog>
Init_data.xml
-
<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.1.xsd">
-
<changeSet id="20221226-01" author="user">
-
<sqlFile path="classpath:liquibase/data/data_liquibase.sql"/>
-
</changeSet>
-
</databaseChangeLog>
sql脚本
test_liquibase.sql
-
SET NAMES utf8mb4;
-
SET FOREIGN_KEY_CHECKS = 0;
-
-
-- ----------------------------
-
-- Table structure for test_liquibase
-
-- ----------------------------
-
DROP TABLE IF EXISTS `test_liquibase`;
-
CREATE TABLE `test_liquibase` (
-
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
-
`name` varchar(255) DEFAULT NULL COMMENT '名称',
-
`length` int(11) DEFAULT NULL COMMENT '长度',
-
PRIMARY KEY (`id`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-
-
-- ----------------------------
-
-- Records of test_liquibase
-
-- ----------------------------
-
BEGIN;
-
COMMIT;
-
-
SET FOREIGN_KEY_CHECKS = 1;
data_liquibase.sql
-
SET NAMES utf8mb4;
-
SET FOREIGN_KEY_CHECKS = 0;
-
-
BEGIN;
-
INSERT INTO `test_liquibase` (`id`, `name`, `length`) VALUES (1, 'test', 10);
-
COMMIT;
-
-
SET FOREIGN_KEY_CHECKS = 1;
6.启动项目sql脚本会自动执行
三、验证
我在项目里写了一个接口查询刚才sql脚本插入的数据,实体类和mapper,service就不放出来了,根据数据库字段建就行,持久层用的mybaits-plus。
调用接口
也可以直接访问数据库验证
databasechangelog和databasechangeloglock是liquibase自动生成的,用于管理数据库变更。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgejkkk
系列文章
更多
同类精品
更多
-
微信小程序没声音怎么办
PHP中文网 06-15 -
excel图片置于文字下方的方法
PHP中文网 06-27 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
微信人名旁边有个图标有什么用
PHP中文网 03-11 -
微信提示登录环境异常是什么意思原因
PHP中文网 04-09 -
微信获取用户openid失败怎么办
PHP中文网 03-26 -
photoshop怎么把印章抠出并放在另一张图上
PHP中文网 06-15 -
EhViewer(E绅士)最新版_ehviewer白色版彩色版_Ehviewer显示网络错误怎么办?e站进不去了怎么办
Evanpatchouli 09-19 -
Excel筛选和排序是灰色的怎么办
PHP中文网 06-22 -
photoshop蒙版画笔没反应怎么办
PHP中文网 06-24