我有以下情况:
类A extends B
。其他类,例如C
,D
等也扩展B
In Class B
,我想将逻辑与A
,C
和D
.
因此,我希望有一个通用查询B
来检索所有通用信息,但也能够将 a 传递Query
给B
以便满足正确join
的 s 和condition
s 。基本上:
public B getB(String bUuid, Query extendedQuery) {
SelectQuery bQuery = ... dsl.select(/* general B columns */)
.select(/* SELECT part from extended query */)
.from(/* general B tables */)
.from(/* FROM part from extended query */) // maybe join with some if else logic instead
.where(/* general B conditions */)
.where(/* WHERE part of extended query */)
这可以使用 JOOQ 吗?除非绝对必要,否则我真的不想使用普通的 SQL 执行。
编辑:
使用下面的答案,这是我非常满意的最终代码:
public Record getB(String bUuid, Consumer<SelectQuery> extender)
我称之为:
Record r = B.getB(uuid, query -> {
query.addSelect(...);
query.addJoin(...);
}
而在 getB 中,在制作了我们的“一般”之后SelectQuery query
,我们简单地调用:
extender.apply(query);
之后我们可以简单地query.fetchOne()
使用我们的增强查询。