###新規スタータープロジェクト作成
LiquibaseとMySQLを選択
###application.propertiesにDBの情報を入れる
MySQLで"testdatabase"というデータベースを作る
spring.datasource.url=jdbc:mysql://localhost:3306/testDataBase?serverTimezone=UTC&createDatabaseIfNotExist=true
spring.datasource.username=root
spring.datasource.password=system
spring.jpa.database=MYSQL
spring.liquibase.change-log=classpath:db/db.changelog-master.yaml
###ビルドの依存関係を追加する
build.gradleのdependenciesにspring DATA JPAを追加
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.liquibase:liquibase-core'
runtimeOnly 'mysql:mysql-connector-java'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
}
###最初に読まれるyamlファイルを作成する
Sample\src\main\resources\db配下にdb.changelog-master.yamlを置く
(application.propertiesに書いたファイル名)
中身はdb.changelog配下に置くファイル名を記載
databaseChangeLog:
- include:
file: db/changelog/a.yaml
これでdb.changelog配下にyamlファイルが自動生成される
###テーブル定義
先ほど自動生成されたyamlファイルにテーブル定義を記載していく
databaseChangeLog:
- changeSet:
id: 1
author: aaa
changes:
- createTable:
tableName: user
columns:
- column:
name: id
type: int
autoIncrement: true
constraints:
primaryKey: true
nullable: false
- column:
name: firstname
type: varchar(50)
- column:
name: lastname
type: varchar(50)
constraints:
nullable: false
- column:
name: state
type: char(2)
※yamlファイルは必ず半角スペースでインデントする
###実行
a5m2でtestdatabaseというDBとuserテーブルが生成されていることを確認
###テーブル定義が変更になった場合
#####◆カラムの追加
db.changelog-master.yamlにファイル名を追加
databaseChangeLog:
- include:
file: db/changelog/a.yaml
- include:
file: db/changelog/b.yaml
自動生成されたdb.changelog配下のyamlファイルにALTER文を書く
databaseChangeLog:
- changeSet:
id: 2
comment: tuika
author: takahashi
changes:
- addColumn:
catalogName: testdatabase
columns:
- column:
name: age
remarks: memo
type: bigint
schemaName: public
tableName: user
※databaseChangeLogのidはユニークキーのため重複しないこと
実行後A5M2を確認