【问题标题】:How to retrieve a sum of table column in play java framework如何在play java框架中检索表列的总和
【发布时间】:2016-04-14 15:35:05
【问题描述】:

我是新手,我可以检索数据库中的所有列,但我不知道如何获得所有检索数据的总和

model class

controller class

【问题讨论】:

  • 所有检索数据的总和是什么意思?顺便说一句,如果您提供代码,它应该以文本形式作为问题的一部分,而不是作为屏幕截图
  • 我的意思是:添加列
  • 我所知道的是做这样的事情,但在 java 中:SELECT SUM(column_name) FROM table_name;
  • 好的,下面看我的回答

标签: playframework playframework-2.0 playframework-2.1


【解决方案1】:

如果您真的想在 Java 中获得 General_store 模型的所有 amount 字段的总和,您可以定义一个方法来计算它:

private static long sumOfStores() {
    long sum = 0;
    List<General_store> allStores = General_store.all();
    for (General_store gs : allStores) {
        sum += gs.amount;
    }
    return sum;
}

当然,如果您使用的是 Java 8,您可以使用流。

但更重要的是:在任何情况下都不要这样做。原因是这是存储在数据库中的信息。因此,您应该向数据库询问有关此信息的任何聚合,这些信息计算起来相当简单。在SUM 的情况下,这真的是微不足道的。使用上述方法,您将首先从数据库中获取所有项目,仅对其中一个字段执行一些琐碎的操作。所以请使用SELECT SUM(column_name) FROM table_name;,省去麻烦。使用 Ebean,您可以毫无问题地使用此类查询:

private static long sumOfStores() {
    final String sql = "SELECT SUM(amount) as total FROM General_store";

    SqlQuery sqlQuery = Ebean.createSqlQuery(sql);
    SqlRow row = sqlQuery.findUnique();
    return row.getLong("total");
}

【讨论】:

  • 好主意,谢谢。耐心点,我再问一个问题,现在我试图通过我的控制器打印结果,但我得到一个错误请帮助:public static Result ShowBalance( ) { Form&lt;General_store&gt; taskData = form(General_store.class); return ok (views.html.balance.render(General_store.sumOfStores(), taskData) );}
  • 如果答案解决了您的问题,您可能会考虑接受它。仅供参考:如果您有不同的问题而不是编辑这个问题,请打开另一个问题 :) 我也会尽力提供帮助
  • 错误说不能应用于 lon.play.form
  • 真的建议提出一个新问题,因为这现在与 Play 模板引擎有关。包括balance.scala.html 的代码 - 模板似乎有错误的参数,或者甚至可能是表单创建错误。另外您使用的是哪个 Play 版本? 2.1?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多