使用Flyway占位符生成SQL语句

问题描述

我试图将一些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"