java - 在jooq的seek api中使用子查询

标签 java sql jooq

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

假设我有一张像

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

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

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

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

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

最佳答案

你可以这样做:

// 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();

本质上,这是包装 Select<? extends Record1<T>>输入 Field<T>输入 DSL.field(Select)

关于java - 在jooq的seek api中使用子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689287/

相关文章:

PHP/MySQL/??? - 组织文章和任意深度的子文章,其中可以检索任何文章,以及所有 parent 和 child

php - laravel中如何使用foreach向数据库中添加数据

mysql - 我的 TRIGGER sql 语句有什么问题 - MySQL

java - JOOQ:返回自动递增的 key ?

spring - jooq @NotNull 自动增量验证

java - 如何删除字符串的第一个和最后一个字符?

java - 已签名的 Java 小程序无法访问本地文件系统

matlab switch case 中的 java 枚举

java - 在选择查询 jooq 中使用 java 方法

java - 使用jackson和spring boot发送json