官网地址:http://mybatis.org/migrations
GitHub地址:https://github.com/mybatis/migrations

简介(出自ChatGPT)

MyBatis Migrations 是一款基于 SQL 的数据库版本控制系统,它由 MyBatis 团队开发。该工具的设计目标是为了简化数据库迁徙过程,以便更好地追踪、治理和利用数据库模式的变更。

以下是 MyBatis Migrations 的一些次要个性:

  1. SQL 为核心:MyBatis Migrations 是基于 SQL 的,这意味着数据库迁徙脚本是用 SQL 语言编写的。这样的设计使得数据库管理员和开发人员能够间接应用相熟的 SQL 语言来治理数据库模式的变更。
  2. 反对撤销操作:MyBatis Migrations 提供了撤销操作,这使得你能够不便地撤销最近的数据库模式变更。每个迁徙脚本都蕴含两局部:一部分用于执行数据库变更,另一部分用于撤销这些变更。
  3. 主动版本控制:每次你执行一个新的数据库迁徙,MyBatis Migrations 都会在一个非凡的表(默认名为 changlog)中记录这次变更。这使得你能够很容易地查看历史变更,以及查看哪些迁徙曾经被利用,哪些还未被利用。
  4. 灵活性和可定制性:MyBatis Migrations 容许你定制迁徙过程。例如,你能够抉择在什么工夫利用哪些迁徙,你也能够抉择是否执行撤销操作。
  5. 反对命令行和编程式 API:你能够通过命令行工具来应用 MyBatis Migrations,也能够在你的 Java 代码中调用 MyBatis Migrations 的 API。

MyBatis Migrations 是一款十分实用的数据库版本控制工具,尤其适宜喜爱间接应用 SQL 治理数据库模式的团队。

留神❗️❗️❗️

MyBatis Migrations 是一个 Java 工具,因而您必须装置 Java 能力持续。用户至多须要 Java 运行时环境(JRE),而装置 Java 开发工具包 (JDK) 则更好。MyBatis Migrations 须要 Java 版本 8 或更高版本。

装置

1. 下载我的项目压缩包

下载地址址:点击下载 mybatis-migrations-3.3.11

2. 解压到自定义目录

解压后目录文件构造:

mybatis-migrations-3.3.11

  • lib/mybatis-${project.version}.jar
  • lib/mybatis-migrations-${project.version}.jar
  • bin/migrate --------------------------------------(linux 执行命令)
  • bin/migrate.cmd ---------------------------------(windows 执行命令)
  • LICENSE
  • NOTICE
  • MIGRATIONS-README

3. 配置环境变量

  • Mac 零碎

    1. 编辑 .bash_profile 文件,文件最初追加如下内容:

      export MIGRATIONS_HOME=/Users/superman/工具/mybatis-migrations-3.3.11export PATH="$MIGRATIONS_HOME/bin:$PATH"

      MIGRATIONS_HOME 的值为我的项目包的目录门路

    2. 执行命令 source .base_profile 使环境变量配置失效
    3. 验证是否配置胜利,执行命令 migrate info 输入后果如下则表明配置胜利

开始应用

新建一个空目录

mkdir test

进入 test 目录,执行初始化命令

migrate init

在 test 目录下会主动生成 3 个目录

  1. drivers ------------ JDBC 驱动库,.jar 或 .zip 文件
  2. environments ----- 数据库配置文件
  3. scripts ------------ 迁徙脚本

下载 JDBC 驱动文件

这里以 PostgreSQL 为例,下载地址:https://jdbc.postgresql.org/download/

将下载好的 jar 包,放到 drivers 目录下即可

配置文件

environments 目录有一个默认配置文件 development.properties
还能够创立 local.properties pro.properties文件
运行迁徙时,能够应用 --env=<environment> 选项指定环境(不蕴含门路或 .properties局部)
如:migrate up --env=local

配置示例 - 数据库配置

## JDBC connection properties.driver=org.postgresql.Driverurl=jdbc:postgresql://127.0.0.1:54320/testusername=homesteadpassword=secret

验证数据库是否连贯胜利
输入内容没有报错信息表明胜利,没有胜利依据报错信息进行排查

migrate status

应用

常用命令:
migrate new
migrate up
migrate down

初始化数据库配置(新库能够疏忽此步骤)
脚本文件位于 ./script/bootstrap.sql,通常用来定义你在开始应用 MyBatis Migrations 治理数据库版本之前,数据库中曾经存在的表和数据,bootstrap.sql 文件的具体内容将取决于你的数据库的现状。

文件应该蕴含你数据库中所有曾经存在的表的创立语句,以及其余任何你须要记录的数据库状态(如索引、视图、存储过程等)

migrate bootstrap

新建迁徙脚本

migrate new "create users table"

该命令将创立了一个 sql 文件,格局为:工夫戳_自定义形容.sql

20230528075331_create_users_table.sql

默认前缀为 工夫戳,当然也能够在初始化 init 命令加上参数 --idpattern=0000 来设置前缀

migrate --idpattern=0000 initmigrate new "create users table"

这时候新创建的迁徙脚本文件名前缀就发生变化了

0003_create_users_table.sql

脚本文件内容格局:

-- // create users table-- Migration SQL that makes the change goes here. 更改脚本语句放在这里,如 CREATE TABLE xxx()-- //@UNDO-- SQL to undo the change goes here. 回滚脚本语句放在这里,如 DROP TABLE  xxx

开始迁徙

  1. 先查看一下以后状态
mybatis-migrations/db/test$ migrate status-------------------------------------------------------------------------- MyBatis Migrations - status------------------------------------------------------------------------ID             Applied At          Description================================================================================1             ...pending...      create changelog2             ...pending...      first migration3             ...pending...      create users table
  1. 执行 migrate up
  2. 查看一下状态
mybatis-migrations/db/test$ migrate status-------------------------------------------------------------------------- MyBatis Migrations - status------------------------------------------------------------------------ID             Applied At          Description================================================================================1         2023-05-30 00:26:23     create changelog2         2023-05-30 00:26:23     first migration3         2023-05-30 00:26:23     create users table
  1. 执行 migrate down
  2. 查看一下状态
mybatis-migrations/db/test$ migrate status-------------------------------------------------------------------------- MyBatis Migrations - status------------------------------------------------------------------------ID             Applied At          Description================================================================================1         2023-05-30 00:26:23     create changelog2         2023-05-30 00:26:23     first migration3             ...pending...       create users table

命令列表

命令格局:migrate {命令}
命令作用示例形容
info显示构建版本信息migrate info
init创立并初始化迁徙脚本的存储库migrate init--path 指定生存储库地位,默认当前目录(必须为空目录) ,--idpattern 设置生成脚本文件的前缀,默认为以后工夫戳
bootstrap执行数据库起始脚本,初始化数据库migrate bootstrap执行数据库起始脚本,创立迁徙脚本基线(用于已存在的数据库)
new创立迁徙脚本migrate new "create users table"依据模板在 ./scripts 目录下创立前缀为 --idpattern (默认工夫戳) 的脚本 "create blog table" 为生成的脚本形容生成的文件名为 "(前缀 + create_blog_table)"
up提交并执行迁徙脚本migrate up顺次运行所有待处理迁徙脚本的 do 局部
down回滚迁徙脚本migrate down执行迁徙脚本的 undo 局部,并使状态变为 pending,默认回退一个版本,前面加上数字可指定回退 n 个版本
version执行到指定版本的迁徙脚本migrate version 20230526032814版本小于等于 20230526032814 并且状态为 pending 的所有迁徙脚本都会执行 do 局部,版本大于 20230526032814 并且状态为已 up 的所有迁徙脚本都会执行 undo 局部
pending执行有抵触的迁徙脚本migrate pending当你 new 一个 script 且没有 up 之前,有另外的人 new 了一个 script 且 up 了,此时你执行 up 将会不胜利,你须要先确定你的 script 与之无抵触之后执行 pengding
status显示以后迁徙脚本状态migrate status查看当前工作空间状态 Applied At 为提交工夫 pending 示意状态为待执行
script合并迁徙脚本migrate script 版本1 版本2 > do.sql合并“版本1”到“版本2”的 do 脚本,从小到大合并的是 do 脚本
migrate script 版本2 版本1 > undo.sql合并“版本2”到“版本1”的 undo 脚本,从大到小合并的是 undo 脚本
migrate script pending > pending.sql合并状态为 pending 的 do 脚本