我使用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,我正在显示表行,它允许所有这些功能的组合。
谢谢!标记
P.S。除非知道如何利用Groovy执行此操作(我的偏好),如果有人可以告诉我如何将所有这些结合到SQL查询中,我总是可以执行查询。
答案 0 :(得分:0)
一个解决方案是将其作为带参数的SQL查询:
sql.eachRow('select * from VENDOR where vendorName like ? order by vendorName asc', ['%Alpha%'] ((pageNumber-1)*pageSize)+1, pageSize) { row ->
...
}
查看DataSet源代码显示它不提供分页。它可以通过使用适当的参数offset和maxRows扩展DataSet.rows()并修改对super.rows的底层调用(getSql(),getParameters(),offset,maxRows)来轻松添加。
- 更新 -
我在Groovy JIRA上提出了一个问题,并在Groovy项目上创建了一个pull请求来解决它,这使得它成为Groovy 2.0和Groovy 1.8.7(尚未发布)。所以现在DataSet也支持分页!
参见groovy 2.0.0 API: