我在我们的解决方案中使用JOOQ进行评估,我们使用REST API公开数据并检查以下功能是否可以使用jooq的seekAfter
和seekBefore
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而不是文字值一个表达式?
答案 0 :(得分: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();
基本上,这是将Select<? extends Record1<T>>
类型包裹在Field<T>
类型https://octobercms.com/docs/plugin/localization#accessing-strings