【发布时间】:2018-12-23 16:25:03
【问题描述】:
我是 Grails 的新手。我使用我的外部 mysql 数据库。我是否必须为我的数据库中的表制作 Grails 域类(将我的数据库复制到域模型中),或者我可以为我的外部 mysql 表制作控制器和视图而不制作域类?
感谢您的回答。
【问题讨论】:
标签: mysql grails controller dns
我是 Grails 的新手。我使用我的外部 mysql 数据库。我是否必须为我的数据库中的表制作 Grails 域类(将我的数据库复制到域模型中),或者我可以为我的外部 mysql 表制作控制器和视图而不制作域类?
感谢您的回答。
【问题讨论】:
标签: mysql grails controller dns
不,您有效地模拟了您域中的数据库表。
事实上,如果您先构建域,它们会自动为您构建表;许多人发现这是一种更简单的方法,就像您有一个预先存在的数据库一样,您必须完全匹配约束才能使其工作。
【讨论】:
没有要求您必须将 GORM 与 Grails 一起使用。实际上,您可以只使用 groovy.sql 包中的类等,并使用 SQL 和“GroovyRowResult”而不是域类直接与数据库交互。
但是,如果你不使用 GORM,你也会失去很多脚手架(例如创建控制器和视图),因为你没有域建模。
【讨论】:
最好在可能与数据库相关的类中声明您的域。
用户域类
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]
}
}
如果不声明您的域类,您将在控制器中从数据库执行查询时出错。
【讨论】: