Spring Boot Liquibase基础教程 - josdem

栏目: Java · 发布时间: 6年前

内容简介:Liquibase是数据库的源代码控制。更改日志Changelog:开发人员将基于文本的文件中的数据库更改日志存储在其本地开发计算机上,并将其应用于本地数据库。更改集ChangeSet:由“author”和“id”属性唯一标识。每个变更集通常都包含一个更改,该变更描述了要应用于数据库的更改/重构。

Liquibase是数据库的源代码控制。

更改日志Changelog:开发人员将基于文本的文件中的数据库更改日志存储在其本地开发计算机上,并将其应用于本地数据库。

更改集ChangeSet:由“author”和“id”属性唯一标识。每个变更集通常都包含一个更改,该变更描述了要应用于数据库的更改/重构。

这次我将向您展示如何将Liquibase添加到Spring Boot项目中。首先,您需要在build.gradle文件中添加Liquibase依赖项:

compile "org.liquibase:liquibase-core:3.5.3"

执行此命令以生成主更改日志:

liquibase --driver=com.mysql.jdbc.Driver --classpath=/${CONNECTOR_PATH}/mysql-connector-java-5.1.34.jar --changeLogFile=${PROJECT_PATH}/src/main/resources/db/changelog/db.changelog-master.yaml --url=jdbc:mysql://localhost:3306/db_name --username=username --password=password generateChangeLog

如果您使用的是Windowns计算机:

liquibase --driver=com.mysql.jdbc.Driver --classpath=C:\${CONNECTOR_PATH}\mysql-connector-java-5.1.34.jar --changeLogFile=C:\${PROJECT_PATH}\db\changelog\db.changelog-master.yaml --url=jdbc:mysql://localhost:3306/db_name --username=username--password=password generateChangeLog

上个命令将生成一个db.changelog-master.yaml文件。

databaseChangeLog:
- changeSet:
    id: 1487128064865-1
    author: josdem (generated)
    changes:
    - createTable:
        columns:
        - column:
            autoIncrement: true
            constraints:
              primaryKey: true
            name: id
            type: BIGINT
        - column:
            constraints:
              nullable: false
            name: date_created
            type: datetime(6)
        - column:
            constraints:
              nullable: false
            name: email
            type: VARCHAR(255)
        - column:
            constraints:
              nullable: false
            name: status
            type: INT
        - column:
            constraints:
              nullable: false
            name: token
            type: VARCHAR(255)
        tableName: registration_code
- changeSet:
    id: 1487128064865-2
    author: josdem (generated)
    changes:
    - createTable:
        columns:
        - column:
            autoIncrement: true
            constraints:
              primaryKey: true
            name: id
            type: BIGINT
        - column:
            constraints:
              nullable: false
            name: account_non_expired
            type: BIT(1)
        - column:
            constraints:
              nullable: false
            name: account_non_locked
            type: BIT(1)
        - column:
            constraints:
              nullable: false
            name: credentials_non_expired
            type: BIT(1)
        - column:
            constraints:
              nullable: false
            name: date_created
            type: datetime(6)
        - column:
            name: email
            type: VARCHAR(255)
        - column:
            constraints:
              nullable: false
            name: enabled
            type: BIT(1)
        - column:
            name: firstname
            type: VARCHAR(255)
        - column:
            name: lastname
            type: VARCHAR(255)
        - column:
            constraints:
              nullable: false
            name: password
            type: VARCHAR(255)
        - column:
            constraints:
              nullable: false
            name: role
            type: VARCHAR(255)
        - column:
            constraints:
              nullable: false
            name: username
            type: VARCHAR(255)
        tableName: user
- changeSet:
    id: 1487128064865-3
    author: josdem (generated)
    changes:
    - addUniqueConstraint:
        columnNames: username
        constraintName: UK_sb8bbouer5wak8vyiiy4pf2bx
        tableName: user

这是我目前使用Liquibase创建YAML文件的实体:

@Entity
class User implements Serializable {

  @Id
  @GeneratedValue(strategy=AUTO)
  Long id
  @Column(unique = true, nullable = false)
  String username
  @Column(nullable = false)
  String password
  @Column(nullable = true)
  String firstname
  @Column(nullable = true)
  String lastname
  @Column(nullable = true)
  String email
  @Column(nullable = false)
  @Enumerated(STRING)
  Role role

  @Column(nullable = false)
  Boolean enabled = false
  @Column(nullable = false)
  Boolean accountNonExpired = true
  @Column(nullable = false)
  Boolean credentialsNonExpired = true
  @Column(nullable = false)
  Boolean accountNonLocked = true
  @Column(nullable = false)
  Date dateCreated = new Date()

}

RegistrationCode.groovy

@Entity
class RegistrationCode {

  @Id
  @GeneratedValue(strategy=AUTO)
  Long id
  @Column(nullable = false)
  String email
  @Column(nullable = false)
  Date dateCreated = new Date()
  @Column(nullable = false)
  String token = UUID.randomUUID().toString().replaceAll('-','')
  @Column(nullable = false)
  RegistrationCodeStatus status = RegistrationCodeStatus.VALID

  Boolean isValid(){
    status == RegistrationCodeStatus.VALID ? true : false
  }
}

Role.groovy

enum Role {
  USER,ADMIN
}

就是这样,当您启动应用程序时,Liquibase将执行主更改日志并为您创建数据库架构。

源码


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

图解设计模式

图解设计模式

结城浩 / 杨文轩 / 人民邮电出版社 / 2017-1-1 / CNY 79.00

原版连续畅销12年、重印25次! 194张图表 + Java示例代码 = 轻松理解GoF的23种设计模式 《程序员的数学》《数学女孩》作者结城浩又一力作 ◆图文并茂 194张图表(包括57张UML类图)穿插文中,帮助理解各设计模式 ◆通俗易懂 用浅显的语言逐一讲解23种设计模式,读完此书会发现GoF书不再晦涩难懂 ◆专业实用 编写了Java程序代码来......一起来看看 《图解设计模式》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

MD5 加密
MD5 加密

MD5 加密工具