【问题标题】:using sub-query in jooq's seek api在jooq的seek api中使用子查询
【发布时间】:2017-09-27 02:36:12
【问题描述】:

我正在评估在我们的解决方案中使用 JOOQ,我们使用 REST API 公开数据并检查以下功能是否可以使用 jooq 的 seekAfterseekBefore api。

假设我有一张这样的桌子

CREATE TABLE Test (
  Id Int NOT NULL PRIMARY KEY,
  Sid varchar(34) NOT NULL,
  ....
)

我们想使用 Id 字段进行分页,但不想将其暴露给用户。作为响应的一部分,我们将下一个和上一个分页参数作为标记分发。

目前我们正在构建类似的查询

SELECT ... FROM Test WHERE Id > (SELECT Id FROM Test WHERE Sid=?) LIMIT 10;

是否可以给它一个表达式给jooq的seek api而不是文字值?

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    你可以这样做:

    // Assuming this static import:
    import static org.jooq.impl.DSL.*;
    
    DSL.using(configuration)
       .select()
       .from(TEST)
       .orderBy(TEST.ID)
       .seekAfter(field(select(TEST.ID).from(TEST).where(TEST.SID.eq(sid))))
       .limit(10)
       .fetch();
    

    本质上,这是用DSL.field(Select)Select<? extends Record1<T>> 类型包装在Field<T> 类型中

    【讨论】:

      猜你喜欢
      • 2019-12-21
      • 2020-11-20
      • 2021-11-09
      • 2019-10-16
      • 2019-12-27
      • 2019-08-09
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多