使用 flyway 占位符生成 sql 语句

Generate sql statements with flyway placeholders

我试图将一些 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, placeHolderCol) values ('strVal', ${flyway:user})

所以flyway可以替换${flyway:user}并插入用户名。

有什么方法可以像这样渲染 sql 还是我必须“手动”渲染?

Flyway 的占位符与任何其他“供应商特定”SQL 语法没有区别,jOOQ 不支持开箱即用,因此 plain SQL templating 有答案。

只需使用

field("${flyway:user}")

不要使用 DSL.inline(), which is used for creating "inline values"(例如字符串文字)。