转换选择语句

时间:2016-01-29 14:01:08

标签: jdbc jooq

如何动态转换SQL查询? 我知道有一个Select.getSelect(),但我如何在select-query中添加字段?

用例:对于Rest-Query我有很多分页资源,我有一个抽象来创建分页查询。它需要SelectConditionStep并添加其余部分,具体取决于其他参数。它对于简单查询非常有效,但对于包含连接的查询,需要对查询进行一些转换。 (主要是因为我不能天真地限制数字结果,因为连接可以是一对多的关系)

1 个答案:

答案 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();