我是Grails的新手。我使用我的外部mysql数据库。我必须为数据库中的表创建Grails域类(将数据库复制到域模型中),还是可以为外部mysql表仅创建控制器和视图而不创建域类?
谢谢您的回答。
答案 0 :(得分:1)
不,您不能有效地模拟域中的数据库表。
实际上,如果您首先构建域,那么它们将自动为您构建表;许多人发现这是一种更简单的方法,就好像您已有一个数据库一样,您必须完全匹配约束才能使其正常工作。
答案 1 :(得分:1)
不要求必须对Grails使用GORM。实际上,您可以只使用groovy.sql
包中的类,并直接使用SQL和'GroovyRowResult'而不是域类与数据库进行交互。
但是,如果您不使用GORM,那么由于没有域建模,还会丢失很多支架(例如,创建控制器和视图)。
答案 2 :(得分:1)
最好在可能与数据库有关的类中声明您的域。
用户域类
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]
}
}
不声明您的域类,您将在从控制器中的数据库执行查询时得到错误。