Maven集成Mybatis Migrations数据库迁移工具
博客专区 > 文帅 的博客 > 博客详情
Maven集成Mybatis Migrations数据库迁移工具
文帅 发表于12个月前
Maven集成Mybatis Migrations数据库迁移工具
  • 发表于 12个月前
  • 阅读 76
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: Mybatis Migrations强大的数据库迁移工具与maven集成使用

随着开发进度不断向前,你会发现你的数据库模型需要更改,而当这种情况发生时需要更新数据库。
使用数据库迁移框架。和源码版本控制工具跟踪更改源码文件一样,数据库迁移框架跟踪更改数据库模型,然后将增量变化应用到数据库中。

1.官方文档地址


2.maven插件


  • pom.xml文件中添加plugin

         <plugin>
             <groupId>org.mybatis.maven</groupId>
             <artifactId>migrations-maven-plugin</artifactId>
             <version>1.1.2</version>
             <configuration>
                 <repository>${basedir}/src/main/resources/migrate</repository>
                 <environment>${env}</environment>
             </configuration>
             <executions>
                 <execution>
                     <id>migration-package</id>
                     <phase>package</phase>
                     <goals>
                         <goal>pending</goal>
                     </goals>
                 </execution>
             </executions>
             <dependencies>
                 <dependency>
                     <groupId>mysql</groupId>
                     <artifactId>mysql-connector-java</artifactId>
                     <version>${mysql.version}</version>
                 </dependency>
             </dependencies>
         </plugin>
    
  • configuration

    • configuration中包含两个节点,repository为项目中仓库地址,主要包含数据库配置文件和需执行脚本
    • environment 为需执行migrate的环境
  • execution

    • id:命令ID
    • phase:在maven生命周期的哪个阶段执行,本文选择的是package
    • goal:在此阶段执行migrate的哪个命令,此处选择的是pending

3.命令语法


命令作用使用示例说明
init初始化环境migrate init--path设置生成资源库位置,默认当前目录(必须为空目录) --idpattern 设置生成脚本文件的前缀,默认为当前时间戳
bootstrap起始脚本migrate bootstrap执行数据库起始脚本,初始化数据库
new创建脚本migrate new "create blog table"根据模板在./scripts目录下创建前缀为 --idpattern(默认时间戳)的脚本 "create blog table"为生成的脚本描述生成的文件名为"(前缀+create_blog_table)"
status当前状态migrate status查看当前工作空间状态 Applied At: 为应用时间 pending 表示状态为待执行
up执行提交migrate up使所有待处理的任务应用到数据库 执行do选项中的语句
down回退提交migrate down执行undo选项中的语句 并使状态变为pending 默认回退一个版本,后加数字可指定回退n个版本
versionup/down到指定版本migrate version 20160411163849指定版本和之前的版本up,指定版本之后的down
pending比up更强大migrate pending当你new一个script且没有up之前,有另外的人new了一个script且up了,此时你执行up将会不成功,你需要先确定你的script与之无冲突之后执行pengding
script合并脚本migrate pending 版本1 版本2 > do.sql合并版本1到版本2中的do选项中的sql

4.IDEA实操


  1. 修改pom.xml

    • 修改后Plugins列表会多一个migration
      MAVEN Plugins
  2. 初始化

    • 执行migration:init,等待控制台输出success后,${basedir}/src/main/resources/migrate 目录下会生成此文件夹
      Repository
    • environments文件夹下为各环境数据库配置文件
    • scripts文件夹下为生成的脚本所在
    • 详细解释请参考README文件
  3. 创建一个脚本

    • 打开 Excute Maven Goal

    • 输入命令并执行:
      migration:new -Dmigration.description=create_test_table -P dev Excute Maven Goal

    • scripts文件夹下会生产对应的 .sql 文件

    • 修改新生成的 .sql 文件

            -- // create_test_table
            -- Migration SQL that makes the change goes here.
            -- 此处写需执行的sql语句
      
            -- //[@UNDO](https://my.oschina.net/u/1757134)
            -- SQL to undo the change goes here.
            -- 此处写回滚的sql语句
      
  4. 执行

    • 执行status查看状态,up或者pending执行语句,需回滚执行down
    • 亦可在pom.xml文件中为package或install命令绑定执行
共有 人打赏支持
粉丝 2
博文 2
码字总数 894
×
文帅
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: