论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
qidao123.com技术社区-IT企服评测·应用市场
»
论坛
›
数据库
›
分布式数据库
›
【数据库系列】Liquibase 在 Spring Boot 中的利用--详 ...
【数据库系列】Liquibase 在 Spring Boot 中的利用--详细介绍 ...
来自云龙湖轮廓分明的月亮
论坛元老
|
2025-4-29 01:06:44
|
显示全部楼层
|
阅读模式
楼主
主题
1639
|
帖子
1639
|
积分
4927
Liquibase 是一个强大的数据库版本控制工具,能够资助开发者管理和追踪数据库布局和数据的变更。通过与 Spring Boot
的集成,Liquibase 提供了便捷的数据库迁移和版本控制功能。本文将通过多个丰富的示例,详细讲授如何在 Spring Boot
项目中利用 Liquibase。
1. 项目预备
1.1 创建 Spring Boot 项目
访问 Spring Initializr 创建新的 Spring Boot 项目,选择以下依靠项:
Spring Web
Spring Data JPA
MySQL Driver
(或其他数据库驱动)
Liquibase Migration
下载并解压缩天生的项目。
1.2 添加 Maven 依靠
在 pom.xml 中,确保添加 Liquibase 的依靠:
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
<version>4.x.x</version> <!-- 使用最新版本 -->
</dependency>
复制代码
同时确保包罗 Spring Data JPA 和数据库驱动的依靠,比方 MySQL:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
复制代码
1.3 配置数据库毗连
在 src/main/resources/application.properties 中配置数据库毗连信息:
spring.datasource.url=jdbc:mysql://localhost:3306/my_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=my_user
spring.datasource.password=my_password
spring.jpa.hibernate.ddl-auto=none
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml
复制代码
2. 示例 1:创建用户表
2.1 创建变更日志文件
在 src/main/resources/db/changelog 目录下创建一个变更日志文件 db.changelog-master.xml,并界说用户表的创建。
<?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-4.3.xsd">
<changeSet id="1" author="authorName">
<createTable tableName="users">
<column name="id" type="int">
<constraints primaryKey="true" autoIncrement="true"/>
</column>
<column name="name" type="varchar(100)">
<constraints nullable="false"/>
</column>
<column name="email" type="varchar(100)">
<constraints unique="true"/>
</column>
<column name="created_at" type="timestamp">
<constraints nullable="false" defaultValueComputed="CURRENT_TIMESTAMP"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>
复制代码
2.2 启动应用程序
运行应用程序:
mvn spring-boot:run
复制代码
2.3 验证结果
利用数据库管理工具检查 my_database,确认 users 表已乐成创建。
SHOW TABLES; -- 查看数据库中的所有表
SELECT * FROM users; -- 查看 users 表
复制代码
3. 示例 2:添加列和修改列类型
3.1 修改变更日志文件
在 db.changelog-master.xml 中添加新的变更集,用于向 users 表添加 age 列并修改 name 列的类型。
<changeSet id="2" author="authorName">
<addColumn tableName="users">
<column name="age" type="int"/>
</addColumn>
</changeSet>
<changeSet id="3" author="authorName">
<modifyDataType tableName="users" columnName="name" newDataType="varchar(255)"/>
</changeSet>
复制代码
3.2 再次启动应用程序
重新启动应用程序,Liquibase 会检测到新的变更集并应用。
mvn spring-boot:run
复制代码
3.3 验证结果
利用数据库管理工具,检查 users 表,确认 age 列已经添加,并且 name 列的类型已更新。
DESCRIBE users; -- 查看 users 表的结构
复制代码
4. 示例 3:创建订单表并添加外键束缚
4.1 修改变更日志文件
在 db.changelog-master.xml 中添加新的变更集,用于创建 orders 表并添加外键束缚。
<changeSet id="4" author="authorName">
<createTable tableName="orders">
<column name="id" type="int">
<constraints primaryKey="true" autoIncrement="true"/>
</column>
<column name="user_id" type="int"/>
<column name="product" type="varchar(100)">
<constraints nullable="false"/>
</column>
<column name="quantity" type="int">
<constraints nullable="false"/>
</column>
<column name="order_date" type="timestamp">
<constraints defaultValueComputed="CURRENT_TIMESTAMP"/>
</column>
<foreignKeyConstraint baseTableName="orders" baseColumnNames="user_id"
referencedTableName="users" referencedColumnNames="id"
constraintName="fk_user_id"/>
</createTable>
</changeSet>
复制代码
4.2 启动应用程序
再次运行应用程序:
mvn spring-boot:run
复制代码
4.3 验证结果
利用数据库管理工具检查 my_database,确认 orders 表已乐成创建,并且 user_id 列与 users 表的 id 列建立了外键关系。
SHOW TABLES; -- 查看数据库中的所有表
SELECT * FROM orders; -- 查看 orders 表
复制代码
5. 示例 4:数据填充
5.1 创建数据填充变更集
在 db.changelog-master.xml 中添加一个新的变更集,用于插入初始数据。
<changeSet id="5" author="authorName">
<insert tableName="users">
<column name="name" value="John Doe"/>
<column name="email" value="john@example.com"/>
<column name="age" value="30"/>
</insert>
<insert tableName="users">
<column name="name" value="Jane Smith"/>
<column name="email" value="jane@example.com"/>
<column name="age" value="25"/>
</insert>
</changeSet>
复制代码
5.2 启动应用程序
再次启动应用程序,Liquibase 会自动将数据插入 users 表。
mvn spring-boot:run
复制代码
5.3 验证结果
检查 users 表,确认数据已正确插入。
SELECT * FROM users; -- 查看 users 表中的数据
复制代码
6. 示例 5:回滚变更
6.1 添加回滚操作
在 db.changelog-master.xml 中,您可以为变更集添加回滚操作。比方,为创建 users 表的变更集添加回滚逻辑:
<changeSet id="1" author="authorName">
<createTable tableName="users">
<column name="id" type="int">
<constraints primaryKey="true" autoIncrement="true"/>
</column>
<column name="name" type="varchar(100)">
<constraints nullable="false"/>
</column>
<column name="email" type="varchar(100)">
<constraints unique="true"/>
</column>
<column name="created_at" type="timestamp">
<constraints nullable="false" defaultValueComputed="CURRENT_TIMESTAMP"/>
</column>
</createTable>
<rollback>
<dropTable tableName="users"/>
</rollback>
</changeSet>
复制代码
6.2 执行回滚
如果需要回滚到之前的状态,可以利用以下命令:
mvn liquibase:rollback -Dliquibase.rollbackCount=1
复制代码
6.3 验证回滚结果
运行回滚命令后,利用数据库管理工具确认 users 表已被删除。
SHOW TABLES; -- 查看数据库中的所有表
复制代码
7. 示例 6:利用 YAML 配置文件
除了 XML,Liquibase 还支持利用 YAML 格式的变更日志。以下是一个利用 YAML 的示例。
7.1 创建 YAML 变更日志文件
在 src/main/resources/db/changelog 目录下创建一个名为 db.changelog-master.yaml 的文件:
databaseChangeLog:
- changeSet:
id: 1
author: authorName
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: int
constraints:
primaryKey: true
autoIncrement: true
- column:
name: name
type: varchar(100)
constraints:
nullable: false
- column:
name: email
type: varchar(100)
constraints:
unique: true
- column:
name: created_at
type: timestamp
constraints:
nullable: false
defaultValueComputed: CURRENT_TIMESTAMP
复制代码
7.2 更新配置
在 application.properties 中更新 spring.liquibase.change-log 的路径:
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.yaml
复制代码
7.3 启动应用程序
再次启动应用程序,Liquibase 会根据 YAML 配置创建 users 表。
mvn spring-boot:run
复制代码
8. 总结
通过以上丰富的示例,我们展示了如何在 Spring Boot 项目中利用 Liquibase 进行数据库版本控制和变更管理。Liquibase 提供了灵活的变更集机制,支持创建表、修改列、填充数据、回滚变更等多种操作。无论是利用 XML 还是 YAML 格式,Liquibase 都能够资助开发者有用管理数据库的演变,使得开发过程更加高效和可靠。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
来自云龙湖轮廓分明的月亮
论坛元老
这个人很懒什么都没写!
楼主热帖
C#实现HTTP访问类HttpHelper
容器化 | 在 S3 实现定时备份 ...
【黄啊码】MySQL入门—5、数据库小技巧 ...
Kubernetes-理解对象
MySQL索引的理解学习,面试不问索引原理 ...
工作流引擎在vivo营销自动化中的应用实 ...
【低代码】低代码平台协同&敏捷场景下 ...
揭秘“AI换脸”诈骗背后,黑灰产使用的 ...
RabbitMQ真实生产故障问题还原与分析 ...
【OpenHarmony】VSCode下移植 LiteOS-M ...
标签云
渠道
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表