【发布时间】:2021-11-03 21:38:18
【问题描述】:
我想操作一个 jOOQ DSL 查询来改变它的 SELECT 列和 WHERE 条件。
例如:
DSLContext ctx = ...;
SelectHavingStep query = ctx.select(MyEntity.MY_ENTITY.ZIP, DSL.count(MyEntity.MY_ENTITY.ZIP))
.from(MyEntity.MY_ENTITY)
.where(MyEntity.MY_ENTITY.ID.gt("P"))
.groupBy(MyEntity.MY_ENTITY.ZIP);
用例 1:
我想将上述查询传递给一个实用程序类,该实用程序类将使用不同的 SELECT 生成相同的查询,例如:
ctx.select(DSL.count())
.from(MyEntity.MY_ENTITY)
.where(MyEntity.MY_ENTITY.ID.gt("P"))
.groupBy(MyEntity.MY_ENTITY.ZIP);
这个特殊的例子是为了能够创建显示查询总行数的分页结果。
用例 2:
我想将上述查询传递给一个实用程序类,该实用程序类将使用修改后的 WHERE 子句生成相同的查询,例如:
SelectHavingStep query =
ctx.select(MyEntity.MY_ENTITY.ZIP, DSL.count(MyEntity.MY_ENTITY.ZIP))
.from(MyEntity.MY_ENTITY)
.where(
MyEntity.MY_ENTITY.ID.gt("P")
.and(MyEntity.MY_ENTITY.ZIP.in("100", "200", "300"))
)
.groupBy(MyEntity.MY_ENTITY.ZIP);
这个特定示例是为了进一步限制基于某些条件的查询(即基于执行查询的用户的数据可见性)。
这可能吗?
目前,我在应用程序代码中的查询构造时使用帮助类来执行此操作。我想将责任转移到图书馆,以便可以透明地对应用程序执行。
谢谢。
【问题讨论】: