2016-01-29 130 views
0

如何動態轉換SQL查詢? 我知道有一個Select.getSelect(),但我如何添加選擇查詢中的字段?轉換select語句

用例:對於Rest-Query我有很多分頁資源,我有一個抽象來創建分頁查詢。它採用SelectConditionStep並根據附加參數添加其餘部分。它對於簡單的查詢非常有效,但對於包含連接的查詢,則需要對查詢進行一些轉換。 (主要是因爲我不能天真地限制數字結果,因爲加入可以是一對多的關係)

回答

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