【问题标题】:Can I use named parameters with jOOQ SQL executor?我可以在 jOOQ SQL 执行器中使用命名参数吗?
【发布时间】:2018-05-11 18:44:16
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: sql postgresql jooq


    【解决方案1】:

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

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

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

    【讨论】:

    • @JellyOrns:确实如此。路线图上有一些功能请求可以更彻底地支持它们。它们受支持,但在普通 SQL API 中不支持
    • 卢卡斯,很高兴听到这个消息。我会留意未来版本的更新日志!
    猜你喜欢
    • 1970-01-01
    • 2011-03-24
    • 2019-08-16
    • 2013-08-06
    • 2017-01-28
    • 2013-07-14
    • 2014-11-02
    • 2017-09-27
    • 2013-09-10
    相关资源
    最近更新 更多