查询每天或每月获取数据等?在grails中

时间:2013-04-11 09:58:09

标签: grails gorm

我想在我的grails应用程序中绘制一些图表,但在此之前我必须从数据库中获取数据来提供图表,但我仍然无法弄清楚如何使用正确的数据获取所需的数据方法

我有一个开始日期和结束日期限制期限,我希望按日或周,月,年等方式获取数据。

我想从开始日期到结束日期进行循环,步骤等于一天/周/月/年等。

你认为这是正确的方法吗?如果是如何在groovy写这个,如果没有请告诉如何以正确的方式这样做

由于

1 个答案:

答案 0 :(得分:1)

在这种情况下我喜欢做的是在查询本身中对结果进行分组和求和,就像使用sum()和group by子句在普通sql中一样。 Grails基于Hibernate,而Hibernate是select new map()语法,非常适合这些案例。

以下是Grails中按月选择财务总额的示例(如财务交易):

def query = """
  select new map(sum(tx.value) as total, month(tx.date) as month, year(tx.date) as year)
    from Transaction tx
   where tx.date >= :beginDate and tx.date < :endDate
   group by month(tx.date), year(tx.date)
   order by year(tx.date) desc , month(tx.date) desc
"""
def result = Transaction.executeQuery(query,[beginDate:someDate, endDate:anotherDate])

使用该代码,您可以循环遍历result变量并转到每个结果项目,即地图。像这样:

result.each{ item ->
    println "Financial total for ${item.month}/${item.year} is equal to ${item.total}"
}

我认为这是非常简单和严谨的解决方案。 此致...