论坛首页 Java企业应用论坛

ibatis migration 的使用

浏览 2736 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-09   最后修改:2009-12-09
最近接到任务,将使用的数据库纳入版本管理中。在老大的指点下,找到了Ibatis Migration.一点点心得,向大家分享下。也方便后来人吧。初次发帖,看官轻拍。
由于没有网上相册。我做成了附图的word文档,以附件上传。


1. 下载ibatis工具包。解压。配置环境变量,将Ibatis加入path下面。
2. 创建Ibatis Migration工作目录。如:D://MigrationWork.
3. 在工作目录打开Cmd.执行migrate命令

4. 常用的参数有:init,用于初始化工作目录,
bootstrap,用于初始化执行bootstrap.sql中的数据库创建脚本(后文祥述)
new,用于创建新的日志文件记录对表结构的变更操作。
up,用于执行所有的已创建日志文件中的SQL语句。
Down,用于撤销最近一次的数据库表结构变更操作。
Status,列出所有的数据库表结构变更记录。
Version,用于撤销到指定记录号的历史变更点。
Pending,用于执行历史日志中标记为pending的操作。和up不同的是,此语句不是顺序执行的。
5. 第一次运行时,执行migrate init命令,会在工作目录下生成drivers,enviroments,scripts,三个文件夹。
Drivers,用于存放jdbc驱动文件。
Environments目录下有一个development.properties资源文件。

各配置项按照对应数据库来设置即可。后五项保持为默认值无变化。注意由于驱动版本的不同,driver对应的包结构也可能不同,driver的值必须与上层drivers目录下的驱动版本一致。
6.
执行migrate init:

其中create changelog.sql为用于在数据库中创建操作变更日志SQL。
First_migration.sql无实际意义。
并且将驱动文件放入drivers目录中,配置environment目录下的配置文件。
接下来。若是在已存在的数据库脚本基础上添加版本管理。可将脚本写入到scripts下的bootstrap.sql中,并执行migrate  bootstrap来执行创建数据库脚本。
若数据库已纳入版本管理,或是新建的数据库可执行如下命令:
Migrate new “XXXXXX”:此命令会在scripts目录下创建名为“当前日期+XXXXXX.sql”文件。

文件结构:

在前面的空白处写入你的创建数据库表的脚本。在后面@UNDO标签后面,写入删除数据库表的脚本。然后在命令行执行 migrate  status命令

可以看到当前scripts目录下所有的脚本文件。
Pending表示尚未执行的状态。通过运行 migrate up,可以执行所有状态为pending脚本
而在数据库中也会创建相应的表,

Changelog为记录日志。
当我们再执行migrate  status,会看到如下效果:

之前标记为pending的现在全都是时间戳。
执行migrate  down,会回退前一步的操作。执行migrate version <id>会执行标记ID的操作。
若在scripts目录下按照格式创建.sql文件,执行migrate  status命令,也会将其纳入
历史控制之中。
这也使通过svn等版本控制工具,来实现数据库表结构的版本管理成为可能。
与ibatis migration类似的数据库版本管理工具还有dbdeploy。有兴趣的同学可以google下进行研究。
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics