您可以编写在 up/down 操作之前或之后执行的钩子脚本,支持使用SQL或JSR-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值
值部分由两个或多个以冒号:
分隔的段组成。第一段是语言名称(例如SQL
、JavaScript
、Groovy
等)。第二段是文件名。这两个部分是必需的。
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