在jOOQ中限定一个临时表列名

在jOOQ中限定一个临时表列名,第1张

在jOOQ中限定一个临时表列名

在jOOQ中有两种与表/列动态交互的方式(即,不使用代码生成器):

使用普通SQL(
org.jooq.SQL

那就是你在做什么。显然,您可以

Field
通过两种方式直接在普通SQL 引用中限定列:

通过

"tmp"
在每个字段中重复字符串:

Table<Record> TMP = DSL.table("tmp");Field<String> TYPE = DSL.field("tmp.type", String.class);Field<String> TOKEN = DSL.field("tmp.token", String.class);

通过将

"tmp"
引用嵌入到普通的SQL模板中:

Table<Record> TMP = DSL.table("tmp");Field<String> TYPE = DSL.field("{0}.type", String.class, TMP);Field<String> TOKEN = DSL.field("{0}.token", String.class, TMP);

普通的SQL功能在手册中有说明

使用合格的参考(
org.jooq.Name

那可能就是您想要做的。您会写:

Table<Record> TMP = DSL.table(DSL.name("tmp"));Field<String> TYPE = DSL.field(DSL.name("tmp", "type"), String.class);Field<String> TOKEN = DSL.field(DSL.name("tmp", "token"), String.class);

命名功能在手册中进行了描述。

这种方法的优点是:

  • 没有SQL注入风险
  • 区分大小写
  • 表映射和其他AST转换也将起作用


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5507201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存