问题现象
通过H2内存数据库实现单元测试中数据库操作的时候,如果MyBatis配置的SQL语句中包含了· UTC_TIMESTAMP
函数会出现语法不兼容问题。
解决办法
在H2数据库初始化脚本中通过CREATE ALIAS语句将UTC_TIMESTAMP替换为自己实现的Java函数
初始化脚本:
CREATE ALIAS IF NOT EXISTS UTC_TIMESTAMP FOR "com.xxx.FunctionsMySQL.utcTimestamp";
H2数据库初始化:
自定义Java实现:
import java.util.TimeZone;
public class FunctionsMySQL {
public static String utcTimestamp() {
return DateUtil.getCurrentTime("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC"));
}
}