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

参数类型

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

绑定值或绑定参数在不同的SQL数据库中有不同的形式。 JDBC通过仅允许使用?(问号)字符作为绑定变量的占位符来标准化它们的语法。因此,默认情况下,jOOQ会生成?占位符以供JDBC使用。 希望将jOOQ与JDBC以外的其他后端一起使用的用户可以指定所有jOOQ 绑定值,包括索引参数命名参数生成除?之外的替代字符串。

以下是当前的选项

  • INDEXED(默认):使用?生成索引参数占位符。
  • NAMED:生成命名参数占位符,例如,显式命名的参数使用:param,未命名的索引参数使用:1
  • NAMED_OR_INLINED: 为显式命名的参数生成命名参数占位符,并内联所有未命名的参数。
  • INLINED:内联所有参数。

一个例子

-- INDEXED
SELECT FIRST_NAME || ? FROM AUTHOR WHERE ID = ?
-- NAMED
SELECT FIRST_NAME || :1 FROM AUTHOR WHERE ID = :x
-- NAMED_OR_INLINED
SELECT FIRST_NAME || 'x' FROM AUTHOR WHERE ID = :x
-- INLINED
SELECT FIRST_NAME || 'x' FROM AUTHOR WHERE ID = 42
Param<String> x = val("x");
Param<Integer> i = param("x", 42);

DSL.using(configuration)
   .select(FIRST_NAME.concat(x))
   .from(AUTHOR)
   .where(ID.eq(i))
   .fetch();

示例配置

Settings settings = new Settings()
    .withParamType(ParamType.NAMED); // Defaults to INDEXED

以下设置statementType可能会覆盖此设置。

反馈

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

The jOOQ Logo