首页 > 解决方案 > 我可以在 jOOQ SQL 执行器中使用命名参数吗?

问题描述

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

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

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

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

我怎样才能做到这一点?如何在查询中引用该参数?在 JDBC 中,我会写:name_of_parameter::text[].

标签: sqlpostgresqljooq

解决方案


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

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

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

推荐阅读