MyBatis Migrations
MyBatis Migrationsの設定
Releases · mybatis/migrations · GitHubからダウンロードします。
ダウンロード後、適当なディレクトリに配置してパスを通します。
パスは、bash_profileに下記の例の様に通します。
export MYBATIS_MIGRATIONS_HOME=${HOME}/project/tools/mybatis-migrations export PATH=${PATH}:${MYBATIS_MIGRATIONS_HOME}/bin
プロジェクトの初期化
プロジェクト用ディレクトリを作成して、下記の例の様にプロジェクトの初期化を行います。
[user@localhost]$ mkdir sample [user@localhost]$ cd sample [user@localhost]$ mkdir migration [user@localhost]$ cd migration [user@localhost]$ migrate init Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 ------------------------------------------------------------------------ -- MyBatis Migrations - init ------------------------------------------------------------------------ Initializing: . Creating: environments Creating: scripts Creating: drivers Creating: README Creating: development.properties Creating: bootstrap.sql Creating: 20150413014605_create_changelog.sql Creating: 20150413014606_first_migration.sql Done! ------------------------------------------------------------------------ -- MyBatis Migrations SUCCESS -- Total time: 2s -- Finished at: Mon Apr 13 10:46:06 JST 2015 -- Final Memory: 10M/479M ------------------------------------------------------------------------
作成したプロジェクトのディレクトリ構成は、下記の内容になっています。
<project> |-migration |-drivers ← JDBCドライバー配置場所 |-environments ← DB接続設定ファイル配置場所 |-scripts ← SQLファイル配置場所
DB接続設定
migration/environments/development.propertiesにDBへの接続情報を定義します。
time_zone=GMT+0:00 driver=<JDBCドライバークラス名(Oracleの場合、oracle.jdbc.driver.OracleDriver)> url=<JDBC接続URL(Oracleの場合、jdbc:oracle:thin:@localhost:1521:xe>) username=<ユーザー名> password=<パスワード> send_full_script=false delimiter=; full_line_delimiter=false auto_commit=false changelog=CHANGELOG
このファイルは、環境ごとに用意する必要があります。
その為、例えば開発、ステージ、本番を用意する場合は、下記の3つファイルを用意します。
- development.properties(開発)
- staging.properties(ステージ)
- production.properties(本番)
Scriptsファイル作成
下記のコマンドでSQLファイルを生成します。
[user@localhost]$ migrate new create_hello_table Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=128m; support was removed in 8.0 ------------------------------------------------------------------------ -- MyBatis Migrations - new ------------------------------------------------------------------------ Creating: 20150413050113_create_hello_table.sql Done! ------------------------------------------------------------------------ -- MyBatis Migrations SUCCESS -- Total time: 1s -- Finished at: Mon Apr 13 14:01:13 JST 2015 -- Final Memory: 7M/479M ------------------------------------------------------------------------
migration/scriptsにテンプレートファイルが作成されるので、そのファイルにDBへの更新用SQLと更新を戻す用SQLを定義します。
-- // create_hello_table -- Migration SQL that makes the change goes here. CREATE TABLE HELLO_TABLE ( MESSAGE varchar2(50) NOT NULL ); -- //@UNDO -- SQL to undo the change goes here. DROP TABLE HELLO_TABLE CASCADE CONSTRAINTS;
操作方法
[user@localhost]$ migrate up ← DBを更新する場合 [user@localhost]$ migrate down ← DBを戻す場合