`

springboot结合flyway自动创建数据库及表格

 
阅读更多
编写DataSource ,在程序启动的时候判断数据库是否存在,如果存在不做任何操作,如果不存在则创建数据库
import com.alibaba.druid.pool.DruidDataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * Created by xjw
 */
@Configuration
@Primary //在同样的DataSource中,首先使用被标注的DataSource
public class DataSourceConfig {
    private Logger log = LoggerFactory.getLogger(DataSourceConfig.class);

    @Value("${spring.datasource.url}")
    //jdbc:mysql://127.0.0.1:3306/insight?useUnicode=true&characterEncoding=utf8&failOverReadOnly=false&allowMultiQueries=true
    private String datasourceUrl;
    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;

    @Bean     //声明其为Bean实例
    public DataSource dataSource(){
        DruidDataSource datasource = new DruidDataSource();

        datasource.setUrl(datasourceUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);

        try {
            Class.forName(driverClassName);

            String url01 = datasourceUrl.substring(0,datasourceUrl.indexOf("?"));

            String url02 = url01.substring(0,url01.lastIndexOf("/"));

            String datasourceName = url01.substring(url01.lastIndexOf("/")+1);
            // 连接已经存在的数据库,如:mysql
            Connection connection = DriverManager.getConnection(url02, username, password);
            Statement statement = connection.createStatement();

            // 创建数据库
            statement.executeUpdate("create database if not exists `" + datasourceName + "` default character set utf8 COLLATE utf8_general_ci");

            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


        return datasource;
    }
}
 在springboot中引入flyway
(flyway官网中文:https://flywaydb.org/documentation/migrations)
  • 在pom.xml中引入jar
        <dependency>
            <groupId>org.flywaydb</groupId>
            <artifactId>flyway-core</artifactId>
        </dependency>
  • 在配置文件中(application.properties )中添加配置
    flyway.baselineOnMigrate=true
    flyway.locations=classpath:db/migration/ # sql文件的位置
    spring.datasource.validationQuery=SELECT 1
     
  • 根据flyway.locations 配置的位置新增文件夹及文件

     

其中 V 代表版本控制,1.0 1.1代表版本号(注:V1.0 后面是 两个 _ 否则不起作用。sql语句中不能含有创建  schema_version表的信息否则报错)

这样就可以使用flyway控制数据库的版本了。

 

 

  • 大小: 3.7 KB
分享到:
评论

相关推荐

    SpringBoot整合flyway实现步骤解析

    Flyway是一个流行的数据库版本控制工具,它可以与SpringBoot框架集成,以实现自动化的数据库版本控制。在本文中,我们将详细介绍如何将Flyway与SpringBoot集成,实现数据库版本控制。 一、引入依赖 在使用Flyway...

    springboot集成flyway实现数据库版本自动升级及冲突问题解决

    springboot集成flyway实现数据库版本自动升级及冲突问题解决,灵活实现升级语句的自主执行

    springboot 整合 flyway

    SpringBoot与Flyway的结合** SpringBoot提供了对Flyway的内置支持,只需简单配置,即可轻松实现数据库迁移功能。以下是一些关键步骤: **2.1 添加依赖** 在SpringBoot的`pom.xml`或`build.gradle`文件中,添加...

    flyway-springboot.zip_springboot集成flyway数据库版本管理工具

    本篇将详细介绍Spring Boot集成Flyway进行数据库版本管理的过程及相关的知识点。 首先,让我们了解什么是Flyway。Flyway是基于Java的数据库版本管理工具,它允许你以SQL脚本的形式来管理数据库的结构变化。每次...

    SpringBoot集成Flyway.zip

    在SpringBoot应用中集成Flyway,可以自动化数据库版本升级,简化数据库维护流程。 首先,让我们深入了解Flyway的工作原理。Flyway通过创建一个版本化的SQL脚本目录来管理数据库变更。每个脚本代表一个数据库版本,...

    SpringBoot项目集成Flyway进行数据库版本控制的详细教程

    "SpringBoot项目集成Flyway进行数据库版本控制的详细教程" SpringBoot项目集成Flyway进行数据库版本控制是当前软件开发中非常重要的一部分。本文详细介绍了如何在SpringBoot项目中集成Flyway进行数据库版本控制,...

    Flyway详解及Springboot集成Flyway的详细教程

    "Flyway详解及Springboot集成Flyway的详细教程" Flyway是一款数据库版本控制管理工具,支持数据库版本自动升级,Migrations可以写成sql脚本,也可以写在java代码里。Flyway提供了多种方式来集成到项目中,如Command...

    springboot-flyway-strategy-master

    在"springboot-flyway-strategy-master"项目中,我们将深入探讨如何在Spring Boot应用中集成Flyway来实现高效且有序的数据库操作。 首先,Spring Boot提供了对Flyway的内置支持,允许开发者通过简单的配置就能启用...

    SpringBoot整合Flyway的方法(数据库版本迁移工具)

    SpringBoot项目可以自动执行Flyway的SQL文件,并记录数据库版本控制表中。 Flyway的配置参数包括url、user、password、table、enabled、locations等。url参数指定了连接数据库的Url,user参数指定了连接数据库的...

    Java开发案例-springboot-27-整合Flyway实现数据库版本控制-源代码+文档.rar

    Java开发案例-springboot-27-整合Flyway实现数据库版本控制-源代码+文档.rar Java开发案例-springboot-27-整合Flyway实现数据库版本控制-源代码+文档.rar Java开发案例-springboot-27-整合Flyway实现数据库版本控制-...

    SpringBoot项目中配置Flyway.docx

    SpringBoot项目中配置Flyway Flyway是一款开源的数据库版本管理工具,它可以独立于应用实现并管理数据库变更,支持数据库版本自动升级。在Spring Boot框架中,默认封装了Flyway,只需要简单的配置就可以使用,其...

    SpringBoot-Flyway:学习SpringBoot与Flyway集成的项目

    创建项目以学习SpringBoot和Flyway之间的集成 建筑 ... 故障排除 ... 发行说明 可以在找到。 作者 罗曼·别斯克罗夫尼(Roman Beskrovnyi) 致谢 ... 贡献 请按照页面。 行为守则 请遵循页面。 执照 该项目是Apache...

    springboot-flyway-demo:SpringBoot + Flyway的演示

    该项目演示了数据库迁移工具Flyway和SpringBoot框架之间的集成。 分步指南 文章中描述的全部内容:[ ] 演示的一些重要部分 移居 Project有两个迁移,其中包含: src/main/resources/db.migration所有迁移都具有项目...

    flyway-4.0.3数据库执行工具

    在数据库应用开发中,随着项目的迭代,数据库结构的变化是不可避免的,Flyway提供了一种规范化的、自动化的方式来跟踪、管理和应用这些变化,使得数据库的演变过程变得有序且可回溯。 在"flyway-4.0.3"这个版本中,...

    flyway支持人大金仓数据库jar包

    基于flyway的6.5.7版本修改flway-core ,支持国产数据库,暂时处于自测阶段,使用连接kingbase进行管理正常。

    flyway支持达梦数据库版本jar包

    flyway支持达梦数据库版本jar包,拿来即用

    kingbase-flyway

    kingbase 数据库 flyway 插件,导入此jar在依赖 flyway-8.5.13.jar 版本即可,人大金仓 数据库 国产数据库

    flyway 5.1.1-windows 数据库升级降级工具

    在实际项目中,Flyway 可以集成到构建工具(如Maven或Gradle)和持续集成/持续部署(CI/CD)流程中,确保每次部署时数据库都能自动更新到正确版本。此外,Flyway 支持多种数据库系统,包括MySQL、Oracle、PostgreSQL等...

    数据库版本控制Flyway的demo

    通过应用一系列有序的迁移,Flyway可以帮助开发者跟踪和管理数据库的结构变更,如创建表、添加字段或修改索引等。 ### Flyway工作流程 1. **初始化**:首次运行时,Flyway会在数据库中创建一个名为`schema_version...

    Flyway-Demo-SpringBoot:测试springbootvớiflyway

    通过这个项目,你可以学习如何配置Flyway,创建数据库迁移脚本,并观察它们如何随着应用程序的部署自动执行。 【标签】"Java"表明这个项目是基于Java语言的,特别是使用了SpringBoot框架,这是目前非常流行的企业级...

Global site tag (gtag.js) - Google Analytics