【问题标题】:Grails - external database controllers and domainsGrails - 外部数据库控制器和域
【发布时间】:2018-12-23 16:25:03
【问题描述】:

我是 Grails 的新手。我使用我的外部 mysql 数据库。我是否必须为我的数据库中的表制作 Grails 域类(将我的数据库复制到域模型中),或者我可以为我的外部 mysql 表制作控制器和视图而不制作域类?

感谢您的回答。

【问题讨论】:

    标签: mysql grails controller dns


    【解决方案1】:

    不,您有效地模拟了您域中的数据库表。

    事实上,如果您先构建域,它们会自动为您构建表;许多人发现这是一种更简单的方法,就像您有一个预先存在的数据库一样,您必须完全匹配约束才能使其工作。

    【讨论】:

      【解决方案2】:

      没有要求您必须将 GORM 与 Grails 一起使用。实际上,您可以只使用 groovy.sql 包中的类等,并使用 SQL 和“GroovyRowResult”而不是域类直接与数据库交互。

      但是,如果你不使用 GORM,你也会失去很多脚手架(例如创建控制器和视图),因为你没有域建模。

      【讨论】:

        【解决方案3】:

        最好在可能与数据库相关的类中声明您的域。

        用户域类

        class User {
        
            Long id
            String name
        
            static mapping = {
                table 'user'  //here user is database table name
        
                version false
                id column: 'id', generator: 'increment'
                name column: 'name'
            }
        
            static constraints = {
                id(nullable: true)
                name(nullable: false)
            }
        }
        

        您可以在控制器中使用脚手架来生成 CRUD 以及

        class UserController {
        
            static scaffold = User
            def index() {
                def userList = User.list()
                [userList: userList]
            }
        }
        

        如果不声明您的域类,您将在控制器中从数据库执行查询时出错。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多