编辑:我使用 1.6.8 版的 jOOQ;在较新的版本中,这应该可以工作(见答案)
我正在为我的 Java Web 应用程序编写一个网格模型,用于Jooq
处理通过分页、排序等获取数据...
首先,我创建一个选择factory.select(...)
并将这个 ( SelectConditionStep
) 作为参数传递给我的网格模型,我在其中添加所需的.limit()
和.orderBy()
基于参数的。
但我现在的问题是我还需要知道结果的总数(不仅仅是 1 页)来计算总页数。所以我的问题是是否有可能以某种方式从给定的SelectConditionStep
.
我想将其包装为计数查询中的子查询;就像是:
(不起作用,只是为了展示这个想法)
factory.select(count()).from(selectConditionStep)...
在 MySQL 中,我会这样做:
select count(*) from (select ...) as r
我拥有的当前代码:
private final SelectConditionStep selectStep;
...
@Override
public int getAvailableRows() {
JooqSelect select = new JooqSelect() {
@SuppressWarnings("unchecked")
protected Result<Record> select(Connection connection) throws SQLException {
Factory create = new Factory(connection, dialect);
create.attach(selectStep);
/* This does not compile, just to show what I need */
return create.select(count()).from(selectConditionStep).fetch();
}
};
session.doWork(select);
/* Get result */
return select.getResult()...;
}