MyBatis Migrationは、データベースのスキーマ変更をバージョン管理するためのツールです。

ここでは、MyBatis Migrationの基本的な使い方をステップごとに説明します。

詳しい情報やオプションについては、MyBatis公式サイトを参照してください。

データベースマイグレーションツール比較表

まず、MyBatis Migrationを使うにあたって他のDDLと比較してこのような感じかなと思いました。

特徴 / ツール MyBatis Migration Flyway 無料版 Flyway 有料版 Liquibase
複数環境のDB管理
バージョン管理
ロールバック機能 ×
価格 無料 無料 有料 無料(基本版)
カスタマーサポート × × ×
  • MyBatis Migrationのロールバックは何でもできるが、手動でロールバックコードをマイグレーションファイルに書いていかないといけないのがイマイチ。
  • Flywayの無料版はロールバックできず、有料版はそこそこの値段がする。
  • Liquibaseは機能的に良いが、日本語の最新ドキュメントが少なすぎて一旦、MyBatis Migrationについて調べることにした。

ひとまず、ここではMyBatis Migrationの使用方法をまとめる。

Liquibaseについてはこちらで調べてます。

Flywayについてはこちらで調べてます。

インストール手順

必要条件

  • Java 8以降がインストールされていること。

Windowsの場合

  1. MyBatis MigrationsのZIPファイルをダウンロードし、任意のディレクトリに解凍する。例: C:\Program Files\mybatis
  2. システム環境変数に MIGRATIONS_HOME を追加し、値を C:\Program Files\mybatis\mybatis-migrations-{version} に設定。
  3. MIGRATIONS 環境変数に %MIGRATIONS_HOME%\bin を設定。
  4. システムのパスに %MIGRATIONS% を追加。

UnixベースのOS (Linux, Solaris, Mac OS X) の場合

  1. ZIPファイルをダウンロードし、任意のディレクトリに解凍する。例: /usr/local/mybatis/mybatis-migrations-{version}
  2. コマンドターミナルで MIGRATIONS_HOME 環境変数を追加。例: export MIGRATIONS_HOME=/usr/local/mybatis/mybatis-migrations-{version}
  3. MIGRATIONS 環境変数を追加。例: export MIGRATIONS=$MIGRATIONS_HOME/bin
  4. システムのパスに $MIGRATIONS を追加。例: export PATH=$MIGRATIONS:$PATH

MyBatis Migrationsの使い方

マイグレーション環境の初期化

マイグレーションプロジェクトを始めるには、まずマイグレーション環境を初期化する必要があります。コマンドプロンプトまたはターミナルを開き、マイグレーションを実行したいディレクトリに移動して以下のコマンドを実行します:

migrate init

このコマンドは、マイグレーションに必要なディレクトリ構造と設定ファイルを生成します。生成される主なディレクトリとファイルには以下のものがあります:

  • environments: データベース接続設定を含む環境設定ファイルが格納されます。
  • scripts: マイグレーションスクリプトを格納するディレクトリ。

環境設定ファイルの編集

environments ディレクトリ内の development.properties(または他の環境に対応するプロパティファイル)を編集し、データベース接続情報を設定します。例えば:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/yourdatabase
username=root
password=yourpassword

ブートストラップ

既存のデータベーススキーマを初期化するためのSQLスクリプトを実行。

migrate bootstrap

マイグレーションスクリプトの作成

  1. 新しいマイグレーションスクリプトの作成

    以下のコマンドを実行して新しいマイグレーションスクリプトを作成します。

    migrate new "create blog table"

    このコマンドにより、タイムスタンプ付きのファイルが作成されます。

  2. スクリプトの編集

    作成されたスクリプトファイルを開き、マイグレーション内容を記述します。

    20230706094530_create_blog_table.sql

    ファイルの内容は以下のようになります。

    -- // create blog table
    CREATE TABLE BLOG (
      ID INT PRIMARY KEY,
      NAME VARCHAR(255) NOT NULL
    );
    
    -- //@UNDO
    DROP TABLE BLOG;

    作成されたマイグレーションスクリプトには、実行内容とロールバック内容を記述する必要があります。スクリプトの構造は次の通りです。

    -- // コメント
    -- 実行するSQL文
    
    -- //@UNDO
    -- ロールバックするSQL文
  3. マイグレーションの適用

    以下のコマンドを実行してすべての未適用マイグレーションを適用します。

    migrate up
  4. マイグレーションのロールバック

    以下のコマンドを実行して最後のマイグレーションを元に戻します。

    migrate down