【发布时间】:2019-09-02 10:38:42
【问题描述】:
我使用 JOOQ 作为 SQL 构建器工具,然后在 jdbcTemplate 中执行。我需要动态地将表连接添加到 from 子句。目前我正在这样做..
SelectJoinStep<?> selectClause = select(field("ColumnA"), field("ColumnB"))
.from(table("TableA"));
if(condition) {
selectClause.join(table("TableB), JoinType.JOIN).on(field("columnA").eq(field("columnB")));
}
然后我将 select 子句与 where 子句结合起来..
org.jooq.Query ps = selectClause.where(whereClause);
这工作正常,但现在我想引入分页,所以我需要将选定的字段换出一个简单的计数,如果我可以在这个计数查询中重用 from 子句会很好,但我不能因为选择和 from 子句在同一个变量中。
更新.. 为什么我不能像这样动态地构建 from 子句...
List<Field<?>> fields = new ArrayList<Field<?>>();
fields.add(...);
Table<?> from = table("TableA");
if(condition) {
from.join(table("TableB), JoinType.JOIN).on(field("columnA").eq(field("columnB")));
}
org.jooq.Query ps = select(fields).from(from);
如果条件为真,表连接不会出现在生成的 SQL 中?
【问题讨论】:
-
“我使用 JOOQ 作为 SQL 构建器工具,然后在 jdbcTemplate 中执行” - 为什么不直接使用 jOOQ 执行?