问题描述
我试图将一些sql插入语句保存到文件中以用于测试。 我想为此使用flyway placeholders,但找不到任何内容。
Java中的一些示例:
var sqlTXT = sql.insertInto(table("TBLNAME"))
.set(field("strCol"),field("strVal").toString())
.set(field("placeHolderCol"),field(inline("${flyway:user}")))
.getsql(ParamType.INLINED);
这将产生如下所示的sql字符串:
insert into TBLNAME (strCol,placeHolderCol) values ('strVal','${flyway:user}')
我正在寻找这样的东西
insert into TBLNAME (strCol,${flyway:user})
因此flyway可以替代${flyway:user}
并输入用户名。
有没有办法像这样呈现sql,还是我必须“手动”完成?
解决方法
Flyway的占位符与任何其他“特定于供应商的” SQL语法没有什么不同,jOOQ不支持该语法,因此plain SQL templating给出了答案。
只需使用
field("${flyway:user}")
请勿使用用于创建DSL.inline()
(例如字符串文字)的"inline values"。