• springboot集成flyway实践


    1、创建springboot工程,使用的版本为2.4

    工程结构如下:

    2、增加依赖

            <!--flywaydb-->
            <dependency>
                <groupId>org.flywaydb</groupId>
                <artifactId>flyway-core</artifactId>
                <version>5.2.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
          <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    

     

    3、application.yml  配置

    创建空的数据库flyway

    spring:
      datasource:
        url: jdbc:mysql://localhost:3306/flyway?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
        username: root
        password: 123456
        driver: com.mysql.cj.jdbc.Driver
      #flyway配置
      flyway:
        baseline-on-migrate: true
        #数据库连接配置
        url: jdbc:mysql://localhost:3306/flyway?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT
        user: root
        password: 123456
        #忽略脚本顺序
        out-of-order: true
    

      

    4、在resources文件夹下创建db/migration 文件夹

     SQL文件的命名需要遵从一定的规范,否则运行的时候会报错。

    1、仅需要执行一次的SQL: V开头,后面跟上数字,数字之间可以是"."或者“_"分开。然后再以两个下划线分割。

    2、可重复运行的SQL,以”R“开头,后面再跟两个下划线。

    V1.1__create_user_ddl.sql

    CREATE TABLE IF NOT EXISTS `USER`(
        `USER_ID`          INT(11)           NOT NULL AUTO_INCREMENT,
        `USER_NAME`        VARCHAR(100)      NOT NULL COMMENT '用户姓名',
        `AGE`              INT(3)            NOT NULL COMMENT '年龄',
        `CREATED_TIME`     datetime          NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `CREATED_BY`       varchar(100)      NOT NULL DEFAULT 'UNKNOWN',
        `UPDATED_TIME`     datetime          NOT NULL DEFAULT CURRENT_TIMESTAMP,
        `UPDATED_BY`       varchar(100)      NOT NULL DEFAULT 'UNKNOWN',
        PRIMARY KEY (`USER_ID`)
        )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

      

    V1.2__add_user_dml.sql

    insert into `user`(user_name,age) values('lisi',33);
    

      

    R__add_unknown_user.sql.sql

    insert into `user`(user_name,age) values('unknown',33);
    

      

    5、启动程序

     查看数据库,创建了两张条,分别为flyway_schema_history和user

     flyway_schema_history表

    user表

    6、插件的使用

    <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>5.2.1</version>
                    <configuration>
                        <url>jdbc:mysql://localhost:3306/flyway?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT</url>
                        <user>root</user>
                        <password>root</password>
                        <driver>com.mysql.cj.jdbc.Driver</driver>
                    </configuration>
                </plugin>
    

      

    参考: https://www.jianshu.com/p/567a8a161641

    作者:Work Hard Work Smart
    出处:http://www.cnblogs.com/linlf03/
    欢迎任何形式的转载,未经作者同意,请保留此段声明!

  • 相关阅读:
    ZOJ-2788 Panic Room 【最小割】
    易采群人工智能
    kaggle 入门比赛:使用随机森林解Bag of Words Meets Bags of Popcorn解题报告
    论Python爬虫与MySQL数据库交互的坑
    使用改良版多值覆盖Dancing link X (舞蹈链)求解aquarium游戏
    使用修改版Dancing link X (舞蹈链)求解aquarium游戏
    使用Chrome无头浏览器获取puzzle team club解谜游戏的谜面
    使用深度优先搜索DFS求解star battle游戏
    使用Dancing link X (舞蹈链)求解dominosa游戏
    参加天池Flink TPC-DS性能优化竞赛实况(docker环境搭建与ubuntu容器内编译篇)
  • 原文地址:https://www.cnblogs.com/linlf03/p/15244269.html
Copyright © 2020-2023  润新知