2012-03-30 101 views
0

我正在使用Groovy SQL進行數據庫訪問。非常好,但我需要我無法找到解決方案。使用Groovy SQL進行行的分頁,排序和搜索/過濾

我看到分頁的SQL類的支持相當不錯,如:

sql.eachRow('select * from VENDOR', ((pageNumber-1)*pageSize)+1, pageSize) { row -> 
... 
} 

我也看到了搜索/過濾這樣的:

def rows = sql.rows("select * from PROJECT where name like 'Gra%'") 

最後排序(和過濾?)這樣(使用DataSet類):

def vemdpr = new DataSet(sql, 'VENDOR') 
def sortedVendorsOfInterest = vendor. 
    findAll{ it.vendorName like '%Alpha%' }. 
    sort{ it.vendorName }.reverse() //for desc order, leave off "reverse" for asc 

誰能告訴我如何將它們全部結合到一起工作?我有一個flexigrid,我正在顯示錶格行,它允許所有這些功能的組合。

謝謝! Mark

P.S.除非任何人知道如何利用Groovy來做到這一點(我的偏好),如果任何人都可以告訴我如何將所有這些結合到一個SQL查詢中,我總是可以執行查詢。

回答

0

一個解決辦法是做與參數的SQL查詢:

sql.eachRow('select * from VENDOR where vendorName like ? order by vendorName asc', ['%Alpha%'] ((pageNumber-1)*pageSize)+1, pageSize) { row -> 
... 
} 

考慮看看數據集源表明它不提供分頁。它可以通過擴展DataSet.rows()與適當的參數offset和maxRows並修改底層調用super.rows(getSql(),getParameters(),offset,maxRows)輕鬆添加。

- 更新 -

我提出的一個問題關於Groovy JIRA並創建了一個pull請求來解決這個問題上把它做成的Groovy 2.0和在Groovy 1.8.7 Groovy項目(尚未公佈) 。所以現在在DataSet中也支持分頁!

見常規2.0.0 API:

相關問題