如何动态转换SQL查询?
我知道有一个Select.getSelect()
,但我如何在select-query中添加字段?
用例:对于Rest-Query我有很多分页资源,我有一个抽象来创建分页查询。它需要SelectConditionStep并添加其余部分,具体取决于其他参数。它对于简单查询非常有效,但对于包含连接的查询,需要对查询进行一些转换。 (主要是因为我不能天真地限制数字结果,因为连接可以是一对多的关系)
答案 0 :(得分:1)
最简单的方法是保留List<Field<?>>
,为select()
子句添加字段,然后仅在实际执行时创建Select
语句,而不是传递Select
对象周围。例如:
List<Field<?>> fields = new ArrayList<>();
// Just some examples:
fields.addAll(getDefaultFields());
fields.addAll(getFieldsFromUI());
fields.addAll(getCalculatedFields());
// Much later on, you finally create the statement:
DSL.using(configuration)
.select(fields)
.from(...)
.fetch();