mysql - Grails 域类与存储过程结果集的关联

标签 mysql grails stored-procedures view gsp

大家好,

是否可以将存储过程的结果集关联到 grails 域类...?

我将这个数据库 View 映射到一个域类,这就像一个魅力,但在典型的功能中,我需要根据最终用户提供的某些参数生成数据库 View 。在那种情况下,我无法将参数传递给数据库 View ,所以我创建了一个存储过程,它会给我与 View 相同的结果集,但在涉及多个表的计算和从最终用户获取参数之后。

在 grails views (list.gsp) 中,我使用的大部分插件都是基于域类的,例如:filterpane。 所以我不能简单地将存储过程的结果显示到 grails 中

我是 Grails 的新手。我浏览了 grails froums,用谷歌搜索了很多但无法获得有关该主题的任何建议。

最佳答案

Grails 提供 transient fields当您需要域类中的计算字段时使用。您可以将您的计算逻辑包装在服务中,在使用它之前更改您的领域类实例。

class MyDomain {
  BigDecimal calcField

  static transients = ['calcField']
}

class MyService {
  def dataSource

  List<MyDomain> getInstances() {
    def instances = MyDomain.findAllBy...()
    instances.each { MyDomain ins ->
       doCalcField(ins)
    }

    instances

  }

  void doCalcField(MyDomain myDomain) {
    groovy.sql.Sql sql = new Sql(dataSource)
    //call procedure, returning values as OUT
    myDomain.calcField = calcField //assign out to domain instance
  }

}

根据你的计算,最好直接在服务中做,让你的代码数据库独立。

关于mysql - Grails 域类与存储过程结果集的关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20185685/

相关文章:

php - 类之间能否保持PDO连接?

mysql - 无法在 MySQL 5.0 中创建存储过程。不知道怎么了

multithreading - Grails在 Controller 与另一个线程中执行耗时的任务

用于随机分配调查的 SQL Server 存储过程

mysql - 我想将 mysql blob 导出到目录中的文件中,除了 select into dumpfile 之外还有更好的方法吗?

MySQL/MariaDB : Store a datetime WITH timezone

Mysql 输入/输出查询

mysql - 帮助编写 SELECT 语句

grails - 如何访问在 messages.properties 文件中定义的属性?

Grails 将参数中的数据与每个键的列表值绑定(bind)