Springboot整合liquIbase组件

这篇具有很好参考价值的文章主要介绍了Springboot整合liquIbase组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

liquIbase方式
1、添加依赖
<!-- Liquibase 依赖 -->
<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
</dependency>
2、添加配置项
spring:
  # datasource 数据源配置内容,对应 DataSourceProperties 配置属性类
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/lab-20-liquibase?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.jdbc.Driver
    username: root # 数据库账号
    password: # 数据库密码
  # Liquibase 配置内容,对应 LiquibaseProperties 配置项
  liquibase:
    enabled: true # 开启 Liquibase 功能。默认为 true 。
    change-log: classpath:/db/changelog/db.changelog-master.yaml # Liquibase 配置文件地址
    url: jdbc:mysql://127.0.0.1:3306/lab-20-liquibase?useSSL=false&useUnicode=true&characterEncoding=UTF-8 # 数据库地址
    user: root # 数据库账号
    password: # 数据库密码
3、添加版本变更Log配置项

db目录下的db.changelog-master.yaml文章来源地址https://www.toymoban.com/news/detail-663433.html

databaseChangeLog:
  - changeSet: # 对应一个 ChangeSet 对象
      id: 0 # ChangeSet 编号
      author: yunai # 作者
      comments:# 备注
  - changeSet: # 对应一个 ChangeSet 对象
      id: 1 # ChangeSet 编号
      author: yunai # 作者
      comments: 初始化 users 表 # 备注
      changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类
        - createTable: # 创建表,对应 CreateTableChange 对象。
            tableName: users # 表名
            remarkds: 用户表 # 表注释
            columns: # 对应 ColumnConfig 数组
              - column:
                  name: id # 字段名
                  type: int # 字段类型
                  autoIncrement: true # 自增
                  constraints: # 限制条件,对应一个 ConstraintsConfig 对象
                    primaryKey: true # 主键
                    nullable: false # 不允许空
              - column:
                  name: username
                  type: varchar(64)
                  constraints:
                    nullable: false
              - column:
                  name: password
                  type: varchar(32)
                  constraints:
                    nullable: false
              - column:
                  name: create_time
                  type: datetime
                  constraints:
                    nullable: false
        - insert: # 插入记录,对应 InsertDataChange 对象。
            tableName: users # 表名
            columns: # 对应 ColumnConfig 数组
              - column:
                  name: username # 字段名
                  value: yudaoyuanma # 值
              - column:
                  name: password
                  value: password
              - column:
                  name: create_time
                  value: now()
  - changeSet: # 对应一个 ChangeSet 对象
      id: 2 # ChangeSet 编号
      author: yunai # 作者
      comments: 初始化 users2 表 # 备注
      changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类
        - sqlFile: # 使用 SQL 文件,对应 SQLFileChange 对象
            encoding: utf8
            path: classpath:db/changelog/sqlfile/CHAGE_SET_2_INIT_DB.sql
  - changeSet: # 对应一个 ChangeSet 对象
      id: 3 # ChangeSet 编号
      author: yunai # 作者
      comments: 修复 `users` 的用户名 # 备注
      changes: # 对应 Change 数组。Change 是一个接口,每种操作对应一种 Change 实现类
        - customChange: {class: cn.iocoder.springboot.lab20.databaseversioncontrol.migration.CHANGE_SET_3_FixUsername} # 对应 CustomTaskChange

4、SQL文件
-- 创建用户表
CREATE TABLE `users2` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户编号',
  `username` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '账号',
  `password` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- 插入一条数据
INSERT INTO `users2`(username, password, create_time) VALUES('yudaoyuanma', 'password', now());
5、版本控制测试
public class CHANGE_SET_3_FixUsername implements CustomTaskChange {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @Override
    public void execute(Database database) throws CustomChangeException {
        JdbcConnection connection = (JdbcConnection) database.getConnection();
        try (PreparedStatement psmt = connection.prepareStatement("SELECT id, username, password, create_time FROM users")) {
            try (ResultSet rs = psmt.executeQuery()) {
                while (rs.next()) {
                    String username = rs.getString("username");
                    if ("yudaoyuanma".equals(username)) {
                        Integer id = rs.getInt("id");
                        // 这里,再来一刀更新操作,偷懒不写了。
                        logger.info("[migrate][更新 user({}) 的用户名({} => {})", id, username, "yutou");
                    }
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public String getConfirmationMessage() {
        return null;
    }

    @Override
    public void setUp() throws SetupException {
    }

    @Override
    public void setFileOpener(ResourceAccessor resourceAccessor) {
    }

    @Override
    public ValidationErrors validate(Database database) {
        return null;
    }

}

到了这里,关于Springboot整合liquIbase组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 极速掌握Spring Boot整合Servlet三大组件

    不知道各位小伙伴,是否还记得Servlet、Filter、Listener三大组件的知识点?如果你忘记了,赶紧翻开你的小本本复习回顾一下吧。今天袁老师会给大家介绍如何在Spring Boot中整合Servlet三大组件,快来看看吧。 我们在进行Servlet开发时,通常首先自定义Servlet、Filter、Listener三大组

    2024年02月17日
    浏览(41)
  • spring cloud整合spring boot,整合nacos、gateway、open-feign等组件

    想看具体详情的可以看我的github链接:codeking01/platform-parent: spring cloud整合spring boot、nacos、gateway、open feign等组件 (github.com) 由于我升级了jdk17,所以用上了spring boot 3.0.2了。 踩坑无数,一堆无用文章,写来写去,本文主要是提供给有基础的开发者再次快速搭建使用(确定版本

    2024年02月11日
    浏览(54)
  • Spring Boot 如何整合高性能数据库连接池HikariCP

    当使用Spring Boot整合HikariCP时,您可以更加详细地配置和优化连接池以获得更好的性能。以下是更详细的步骤和示例代码: 步骤1:创建Spring Boot项目 您可以使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目。确保选择适合您的需求的依赖项,例如Web和Spring D

    2024年02月05日
    浏览(75)
  • Springboot 实践(13)spring boot 整合RabbitMq

    前文讲解了RabbitMQ的下载和安装,此文讲解springboot整合RabbitMq实现消息的发送和消费。 1、创建web project项目,名称为“SpringbootAction-RabbitMQ” 2、修改pom.xml文件,添加amqp使用jar包    !--  RabbitMQ --         dependency             groupIdorg.springframework.boot/groupId         

    2024年02月09日
    浏览(56)
  • Spring Boot实战 | 如何整合高性能数据库连接池HikariCP

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(54)
  • Spring Boot整合JPA和人大金仓(Kingbase8)数据库

    在开发Java应用程序时,使用JPA(Java Persistence API)可以方便地进行数据库操作。而人大金仓(Kingbase8)是一款基于国产化研发的关系型数据库。本文将介绍如何在Spring Boot项目中整合JPA和人大金仓数据库,并提供相关实例来演示使用方式。 在开始之前,请确保已经满足以下条

    2024年02月12日
    浏览(44)
  • 【SpringBoot】Spring Boot 项目中整合 MyBatis 和 PageHelper

    目录 前言         步骤 1: 添加依赖 步骤 2: 配置数据源和 MyBatis 步骤 3: 配置 PageHelper 步骤 4: 使用 PageHelper 进行分页查询 IDEA指定端口启动 总结         Spring Boot 与 MyBatis 的整合是 Java 开发中常见的需求,特别是在使用分页插件如 PageHelper 时。PageHelper 是一个针对 MyBat

    2024年04月25日
    浏览(51)
  • 【Spring Boot】SpringBoot 优雅整合Swagger Api 自动生成文档

    Swagger 是一套 RESTful API 文档生成工具,可以方便地生成 API 文档并提供 API 调试页面。 而 Spring Boot 是一款非常优秀的 Java Web 开发框架,它可以非常方便地构建 Web 应用程序。 在本文中,我们将介绍如何使用 Swagger 以及如何在 Spring Boot 中整合 Swagger 。 首先,在 pom.xml 文件中添

    2023年04月22日
    浏览(46)
  • 【Spring Boot】SpringBoot和数据库交互: 使用Spring Data JPA

    在现代应用程序的开发中,数据是核心部分。为了能够持久化、检索、更新和删除数据,应用程序需要与数据库进行交互。 1.1 为什么需要数据库交互 数据持久化 :当你关闭应用程序或者服务器时,你仍希望数据能够保存。数据库提供了一个持久的存储方案,使得数据在关闭

    2024年02月12日
    浏览(50)
  • Spring Boot项目使用 jasypt 加密组件进行加密(例如:数据库、服务的Key、等等进行加密)

    🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝 🍓 更多文章请点击 密码配置项都不加密? 想啥呢? 一

    2024年02月07日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包