【问题标题】:Grails read from existing DBGrails 从现有数据库中读取
【发布时间】:2013-06-21 16:29:56
【问题描述】:

我想从另一个项目中的现有数据库中提取数据到我的 Grails 项目中并列出数据。我应该为已经存在的数据库创建域控制器吗?我知道如何创建域控制器并使用数据迁移插件来更新数据库,但我读过的书都没有关于如何设置和读取现有数据库的任何信息。我正在为我的数据库使用 MySQL。

【问题讨论】:

  • 您不认为发布现有的表架构可能会有所帮助吗?
  • 我还没有开始。不顾架构,我试图从另一个数据库访问一个表。说 devDb.tblUsers
  • “来自另一个项目的现有数据库”是什么意思?这里的主要问题是您是否拥有可供您访问的基础表的域类?

标签: grails grails-orm grails-plugin grails-domain-class grails-controller


【解决方案1】:

使用逆向工程师插件从现有数据库创建域类:https://plugins.grails.org/plugin/grails/db-reverse-engineer

【讨论】:

  • 谢谢伯特,这真的会帮助我。我正在为我们的公司评估 Grails 作为 PHP 开发人员的可能替代品。我使用你的书 Programming Grails 作为参考。你有其他推荐的书吗?另外,如果没有 php mysqli 中的域类,是否无法从数据库访问数据?
【解决方案2】:

根据我的理解,请执行以下操作:

假设您有一个现有的数据库“TestDB”,其中包含一个表“domain_model”,并且它包含“column_a”、“column_b”和“column_c”列。

在 Grail 中,创建一个域类并在映射块中添加以下内容:

static mapping = {
    table "domain_model"
            version false
            id column: "primary_key_column"
            columnA column: "column_a"
            columnB column: "column_b"
            columnC column: "column_c"
}
     String id
     String columnA
     Date columnB
     Integer columnC

在 DataSource.groovy 中,将 dbCreate 属性设置为“更新”。

dbCreate="更新"

希望这会有所帮助!

此外,请确保将“id”和“version”列添加到现有表中,其中“id”列自动递增,并且所有记录都可以将“version”列设为“1”。

【讨论】:

  • 谢谢。另一个问题,Grails 可以读取 xml 作为数据源吗?
【解决方案3】:
def defaultDataFileStream = this.class.getResourceAsStream("defaultData.xml")
def allData = new XmlSlurper().parse(defaultDataFileStream)

bootstrap.groovy 中试试这个。您将 xml 文件放入 grails-app/conf

【讨论】:

    【解决方案4】:

    @codeBarer 通过将 xml 文件放在grails-app/conf 中,您可以将 xml 用作 Grails 中的数据源。您可以在BootStrap.groovy 中引用此文件:

    class.getResource("yourData.xml")
    

    【讨论】:

      【解决方案5】:

      要创建域类,您可以使用 [GARG]:http://grag.sourceforge.net/index.html

      【讨论】:

      • 我尝试使用 GARG 但由于我要导出的架构有超过 800 个表。程序在创建对象之前抛出异常并耗尽内存
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 2014-07-05
      相关资源
      最近更新 更多