可用版本:Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

标识符样式

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

默认情况下,jOOQ 总是会为所有标识符生成带引号的名称(即使本手册为了便于阅读而省略了这一点)。

例如

SELECT "TABLE"."COLUMN" FROM "TABLE" -- SQL standard style
SELECT `TABLE`.`COLUMN` FROM `TABLE` -- MySQL style
SELECT [TABLE].[COLUMN] FROM [TABLE] -- SQL Server style

在大多数(但不是全部)数据库中,加引号对标识符有以下影响

  • 它允许使用保留名称作为对象名称,例如,名为 "FROM" 的表通常只能在加引号时使用。
  • 它允许在对象名称中使用特殊字符,例如,名为 "FIRST NAME" 的列只能通过加引号来实现。
  • 它将大多不区分大小写的标识符变成区分大小写的标识符,例如,"name""NAME" 是不同的标识符,而 nameNAME 则不是。请查阅您的数据库手册,了解正确的默认大小写和默认区分大小写。

renderQuotedNamesrenderNameCase 设置允许将 jOOQ 中所有标识符的名称覆盖为一致的样式。这两个标志彼此独立。可能的选项包括

RenderQuotedNames

  • ALWAYS:这将引用所有标识符。
  • EXPLICIT_DEFAULT_QUOTED:这将引用所有标识符,这些标识符未使用 DSL.unquotedName() 显式取消引用。
  • EXPLICIT_DEFAULT_UNQUOTED:这将不引用任何标识符,除非使用 DSL.quotedName() 显式引用它们。
  • NEVER:这将不引用任何标识符。

RenderNameCase

  • AS_IS:这将以其正确的大小写生成所有名称。
  • LOWER:这将把所有名称转换为小写。
  • LOWER_IF_UNQUOTED:如果名称未加引号,这将把所有名称转换为小写。
  • UPPER:这将把所有名称转换为大写。
  • UPPER_IF_UNQUOTED:如果名称未加引号,这将把所有名称转换为大写。
在某些数据库产品中,带引号的标识符仅启用特殊字符。其他数据库产品也使用引号来使标识符区分大小写。在使用上述标志时,请记住这一点。

示例配置

Settings settings = new Settings()
    .withRenderQuotedNames(RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED) // Defaults to EXPLICIT_DEFAULT_QUOTED
    .withRenderNameCase(RenderNameCase.LOWER_IF_UNQUOTED);              // Defaults to AS_IS

此设置的行为受 renderLocale 设置的影响。

反馈

您对此页面有任何反馈吗?我们很乐意听到!

The jOOQ Logo