Mybatis Migrations 粗体验

Mybatis Schema Migrations 简介

MyBatis Schema Migrations( http://code.google.com/p/mybatis/wiki/Migration)是一个开源的用于DB版本控制的命令行工具,Migrations 通过生成 统一格式的DDL脚本模板 、在目标DB中 记录版本信息和当前状态 ,使得 多人开发团队可以在 多个DB环境 上井然有序的工作,为敏捷和迭代开发提供强有力的技术保障。 


Mybatis Schema Migrations 安装

1). 解压缩 mybatis-migrations-3.2.0.zip 至任意目录;

2). 编辑 bin 目录内的命令文件 migrate.cmd,配置 Java 环境参数;

@echo off
set JAVA_HOME=C:\Program Files\Java\jre1.8.0_31
set PATH=%JAVA_HOME%\bin;%PATH%
set MIGRATIONS_HOME=D:\mybatis-migrations-3.2.0
set PATH=%MIGRATIONS_HOME%\bin;%PATH%

3). 将 mybatis-migrations 的 bin 目录加入到系统 PATH 内。


创建一个 workspace 并初始化

1). 进入任意工作目录,执行初始化命令;

migrate init testdb

Mybatis Migrations 粗体验_第1张图片

2). 初始化完成后,会在工作目录下生成3个文件夹;

drivers -- 用于存放数据库驱动文件(mysql-connector-java-5.1.28-bin.jar)
environments -- 用于存放配置文件(development.properties)
scripts -- 用于存放 .sql 文件

Mybatis Migrations 粗体验_第2张图片

3). 修改配置文件 development.properties

## Base time zone to ensure times are consistent across machines
time_zone=GMT+8:00
## JDBC connection properties.
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.1.133/test
username=dbuser
password=[the-password-you-used]
# This ignores the line delimiters and
# simply sends the entire script at once.
# Use with JDBC drivers that can accept large
# blocks of delimited text at once.
send_full_script=false

4). 配置完成后确认当前工作区状态;

migrate status

Mybatis Migrations 粗体验_第3张图片

可以看到当前有两个操作处于 pending 状态,即表示尚未执行。

5). 第一次执行向前更新操作,即创建当前数据库的基线记录;

migrate up

Mybatis Migrations 粗体验_第4张图片

Mybatis Migrations 粗体验_第5张图片

操作成功后可以看到 MySQL 下对应的数据库(test)中生成一个新的表——CHANGELOG,该表用于记录所有的 migrations 操作。至此,针对数据库 test 的初始化操作完成。 

Mybatis Migrations 粗体验_第6张图片


通过 Mybatis Schema Migrations 进行数据库的版本控制(新增操作)

1). 创建一个新的数据库变更(新增表);

migrate new "ops add table tbl_for_migrations"

Mybatis Migrations 粗体验_第7张图片

Mybatis Migrations 粗体验_第8张图片

创建后可以在 scripts 目录下看到对应生成的 .sql 脚本文件;

2). 编辑该文件,加入相应的建表及用于回滚 SQL 语句;

Mybatis Migrations 粗体验_第9张图片

注意: //@UNDO 下的内容用于回滚操作。

3). 查看当前的工作区状态;

migrate status

Mybatis Migrations 粗体验_第10张图片

可以看到新增的操作处于 pending 状态。

4). 执行向前更新操作;

migrate up

Mybatis Migrations 粗体验_第11张图片

5). 再次查看当前的工作区状态;

migrate status

Mybatis Migrations 粗体验_第12张图片

可以看到该操作已经成功执行。

6). 在 MySQL 中查看新增表;

Mybatis Migrations 粗体验_第13张图片

7). 在 MySQL 中查看 CHANGELOG 表变更情况;

Mybatis Migrations 粗体验_第14张图片

可以看到 CHANGELOG 表对新增表的操作进行了记录。


通过 Mybatis Schema Migrations 进行数据库的版本控制(回滚操作)

1). 执行回滚操作;

migrate down

Mybatis Migrations 粗体验_第15张图片

2). 重新查看当前工作区状态;

Mybatis Migrations 粗体验_第16张图片

可以看到新增表的操作用重新回到了 pending 状态;

3). 在 MySQL 中查看 CHANGELOG 表变更情况;

Mybatis Migrations 粗体验_第17张图片

先前新增表的记录已经删除。

你可能感兴趣的:(mybatis,Migrations)