乐趣区

关于java:MyBatis-Migrations-教程

官网地址: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.11
      export 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.Driver
url=jdbc:postgresql://127.0.0.1:54320/test
username=homestead
password=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 init

migrate 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 changelog
2             ...pending...      first migration
3             ...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 changelog
2         2023-05-30 00:26:23     first migration
3         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 changelog
2         2023-05-30 00:26:23     first migration
3             ...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 脚本
退出移动版