首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring boot中的数据库迁移

Spring Boot 支持多种数据库迁移工具,其中最常用的是 FlywayLiquibase

使用 Flyway 进行数据库迁移

  1. 添加 Flyway 依赖:

pom.xml 文件中添加 Flyway 的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
</dependency>
  1. 配置 Flyway:

application.propertiesapplication.yml 文件中配置 Flyway:

代码语言:javascript
复制
spring.flyway.baseline-on-migrate=true
spring.flylink.locations=classpath:db/migration

spring.flyway.baseline-on-migrate 设置为 true 表示在迁移过程中自动创建 flyway_schema_history 表(如果尚不存在)。

spring.flyway.locations 指定迁移脚本的位置。默认情况下,Flyway 会在 classpath:db/migration 目录下查找 SQL 文件。

  1. 创建迁移脚本:

src/main/resources/db/migration 目录下创建 SQL 文件。文件名必须遵循以下格式:V<version>__<description>.sql。例如:V1__Create_user_table.sql

代码语言:javascript
复制
-- V1__Create_user_table.sql
CREATE TABLE user (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(255) NOT NULL,
  password VARCHAR(255) NOT NULL
);
  1. 运行应用程序:

启动 Spring Boot 应用程序时,Flyway 将自动执行迁移脚本。

使用 Liquibase 进行数据库迁移

  1. 添加 Liquibase 依赖:

pom.xml 文件中添加 Liquibase 的依赖:

代码语言:javascript
复制
<dependency>
    <groupId>org.liquibase</groupId>
    <artifactId>liquibase-core</artifactId>
</dependency>
  1. 配置 Liquibase:

application.propertiesapplication.yml 文件中配置 Liquibase:

代码语言:javascript
复制
spring.liquibase.change-log=classpath:db/changelog/db.changelog-master.xml

spring.liqu部署 liquibase.change-log 指定 Liquibase 的变更日志文件的位置。默认情况下,Liquibase 会在 classpath:db/changelog 目录下查找变更日志文件。

  1. 创建变更日志文件:

src/main/resources/db/changelog 目录下创建变更日志文件。例如:db.changelog-master.xml

代码语言:javascript
复制
<?xml version="1.1" 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/dbcholution/dbchangelog-4.3.xsd">

    <changeSet id="1" author="yourname">
        <createTable tableName="user">
            <column name="id" type="INT" autoIncrement="true">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="username" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
            <column name="password" type="VARCHAR(255)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>
</databaseChangeLog>
  1. 运行应用程序:

启动 Spring Boot 应用程序时,Liquibase 将自动执行变更日志文件中定义的更改。

这就是在 Spring Boot 中使用 Flyway 和 Liquibase 进行数据库迁移的基本方法。您可以根据项目需求选择合适的工具。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从Spring迁移到Spring Boot

从Spring迁移到Spring Boot Spring Boot给我们的开发提供了一系列的便利,所以我们可能会希望将老的Spring 项目转换为新的Spring Boot项目,本篇文章将会探讨如何操作...请注意,Spring Boot并不是取代Spring,它只是添加了一些自动配置的东西,从而让Spring程序更快更好 添加Spring Boot starters 要想添加Spring Boot,最简单的办法就是添加...默认情况下Spring Boot 会查找如下的资源地址: /resources /public /static /META-INF/resources 想要迁移的话 我们可以迁移现有资源到上诉的资源地址...迁移Spring Web程序 如果要迁移Spring Web程序,我们需要如下几步: 添加spring-boot-starter-web依赖: org.springframework.boot...classpath中的依赖包,从而自动开启@EnableWebMvc,同时创建一个DispatcherServlet。

72420
  • 13.12 Spring Boot集成Security中遇到的问题13.12 Spring Boot集成Security中遇到的问题问题1:Spring Boot集成Security使用数据库用户角色

    13.12 Spring Boot集成Security中遇到的问题 问题1:Spring Boot集成Security使用数据库用户角色权限用户名问题 问题描述 代码 package com.springboot.in.action.dao...1 limit 1", nativeQuery = true) def findByUsername(username: String): User 问题2:Spring Boot集成Security...使用数据库用户角色权限ROLE_问题 问题描述 日志打出来的ROLE是USER,代码里调用的是@PreAuthorize("hasRole('USER')"),为什么权限却是不对?...,代码调用的地方保持不变,数据库里面角色必须统一有ROLE_前缀。...而我们看到的后台打印的日志内容也是数据库的信息: username is jack, ROLE_USER LoginFilter:{ "accountNonExpired":true,

    1.3K20

    Spring Boot中的常用注解

    在本篇技术博客中,我们将一起学习Spring Boot中的常用注解,包括Spring框架中的一些关键注解,以及Spring Boot特有的注解。...它允许您在不需要手动配置的情况下,快速搭建Spring Boot应用程序。通过使用各种条件注解,Spring Boot能够根据应用的依赖和环境自动配置各种功能,包括数据库连接、Web服务、消息队列等。...Spring Boot事务管理的注解介绍 事务管理是数据库操作的重要方面,它确保了数据的一致性和可靠性。...在Spring Boot中,您可以使用 @Transactional 注解来管理事务,以便在数据库操作时维护数据的完整性。 1....总结 在本篇技术博客中,我们深入探讨了Spring Boot中的常用注解,从Spring Boot的核心概念和Spring框架的关键注解,到Spring Boot中的常用注解、选择器注解、定时器注解、注入配置文件

    13310

    Spring Boot 中的集成测试

    原文地址:https://www.baeldung.com/spring-boot-testing 1 概览 在这个教程中,我们会带你看看如果使用 Spring Boot 中的框架编写测试用例。...内容会覆盖单元测试,也会有在执行测试用例前会启动 Spring 上下文的集成测试。如果你是使用 Spring Boot 的新手,查看链接:Spring Boot 介绍。...3.1 JUnit4 Spring Boot 2.4 中,JUnit 5’s vintage engine 包已经从spring-boot-starter-test中被移除了。...然而在本文中,我们不关注这个,我们关注的是,使用内存数据库H2持久化存储。 集成测试需要启动一个容器来执行测试用例。因此需要一些额外的设置——这些在 Spring Boot 中都很容易。...SQL日志记录 为了继续数据库操作,我们需要在数据库中添加一些记录。

    4.2K30

    Spring Boot---(13)Spring Boot 使用JPA访问数据库

    摘要:Spring-data-jpa的强大和方便之处在于:可以仅仅用一层接口,就可以实现对数据库的访问和操作。...本文详细介绍了,Spring Boot环境下如何使用Spring-data-jpa 来访问和操作数据库。... spring-boot-starter-data-jpa 2.配置文件 数据库连接 # mysql...update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行...validate :每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

    2.2K20
    领券