3.MyBatis Migrations Hooks

您可以编写在 up/down 操作之前或之后执行的钩子脚本,支持使用SQLJSR-223兼容的脚本语言。

1.创建钩子脚本

在基本目录中创建一个名为hooks的目录。

hooks目录创建hello.js钩子脚本。

//hello.js
print('Hello, World!');

2.配置

钩子脚本是通过在环境属性文件(例如:development.properties)中添加一行以key=value的格式来配置的。

以下代码告诉 MyBatis Migrations在migrate up命令运行前执行hello.js

hook_before_up=JavaScript:hello.js
//输出
========== Applying JSR-223 hook : hello.js ==========
Hello, World!

2.1键

  • hook_before_up
  • hook_before_each_up
  • hook_after_each_up
  • hook_after_up
  • hook_before_down
  • hook_before_each_down
  • hook_after_each_down
  • hook_after_down
  • hook_before_new [1]
  • hook_after_new [1]
  • hook_before_script [1]
  • hook_before_each_script [1]
  • hook_after_each_script [1]
  • hook_after_script [1]

[1] 仅支持 JSR-223 脚本。

2.2值

值部分由两个或多个以冒号:分隔的段组成。第一段是语言名称(例如SQLJavaScriptGroovy等)。第二段是文件名。这两个部分是必需的。

2.3变量

这些变量可以有任意名称,但也有一些用于 JSR-223 钩子的特殊变量名称。

// js示例
// printvar.js
print('This is ' + when + ' ' + what + ' hook.');

// development.properties
hook_before_up=JavaScript:printvar.js:when=before:what=up
hook_after_down=JavaScript:printvar.js:when=after:what=down

// migrate up输出
This is before up hook.

// migrate down输出
This is after down hook.
// sql示例
// update_timestamp.sql
update worklog set ${col} = current_date();

// development.properties
hook_before_up=SQL:update_timestamp.sql:col=before
hook_after_up=SQL:update_timestamp.sql:col=after

2.4函数

要调用函数,请使用特殊变量名称_function指定函数名称和_arg指定参数值。

// foobar.js
function foo() {
  print('foo');
}

function bar(id, name) {
  print(id + ':' + name);
}
// development.properties
hook_before_up=js:foobar.js:_function=foo
hook_after_up=js:foobar.js:_function=bar:_arg=100:_arg=John

2.5方法

要调用方法,请使用特殊变量名称_object指定对象名称和_method指定方法名称以及_arg指定参数值。

// doggy.js
var dog = new Object();
dog.bark = function(who, times) {
  print('bow-wow ' + times + ' times at ' + who);
});
// development.properties
hook_before_up=js:doggy.js:_object=dog:_method=bark:_arg=Lucy:_arg=128

3.JSR-223兼容脚本语言

以添加支持使用groovy脚本语言为例

首先,拷贝groovy.jar 和 groovy-jsr223.jar$MIGRATIONS_HOME/lib目录。

然后,在hooks目录创建hello.groovy钩子脚本。

println('Hello groovy!')

最后,添加配置到环境属性文件。

hook_before_up=groovy:hello.groovy

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/mybatis-migrations/17084.html

(0)
上一篇 2022年9月3日 12:52
下一篇 2022年9月4日 13:57

相关推荐

发表回复

登录后才能评论