sql - 我可以在 jOOQ SQL 执行器中使用命名参数吗?

标签 sql postgresql jooq

我正在使用 jOOQ 执行任意 SQL 查询。我这样做如下:

String result = create.fetchSingle("SELECT ...").getValue(0, String.class);

此查询总是返回一行和一列,因此使用了 fetchSinglegetValue(0, T)。我找不到将两者结合起来的方法。

我现在想将命名参数传递给该查询。该参数在多个地方使用,所以我认为在这里使用命名参数是一个很好的用法。该参数的类型为字符串数组。

我该怎么做?如何在查询中引用该参数?在 JDBC 中,我会编写 :name_of_parameter::text[]

最佳答案

您要查找的 API 是 DSLContext.fetchSingle(String, Object...) ,它接受带有参数占位符的 SQL 字符串,以及实际的绑定(bind)。

但是,它不支持命名参数,仅支持索引参数,因此您必须多次重复该值,例如

create.fetchSingle("SELECT 'a' WHERE ?::text[] = ?::text[]", value, value)
      .getValue(0, String.class);

关于sql - 我可以在 jOOQ SQL 执行器中使用命名参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288526/

相关文章:

sql - 按年和月分组并获得一个月的最小值和日期

sql - PostgreSQL:将值放在一列中作为结果集中的标题?

ruby-on-rails - 如何避免未定义方法错误

sql - 更新时如何在postgresql jsonb字段中附加对象

java - JOOQ - 调用 Record.update() 时出现 DataChangedException?

java - 如何从 JOOQ 3.11 中的 JSONB 转换

MySQL 变量内容

mysql - 比较和更新百万行的最快方法

php - pg_query_params 为 postgresql 提供日期参数

java - jOOQ 将字符串转换为 boolean 值