1、 将环境部署在MySQL上
首先修改 grails-app\conf\DataSource.groovy:
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "root"
password = "122547"
}
hibernate {
cache.use_second_level_cache=true
cache.use_query_cache=true
cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
// environment specific settings
environments {
development {
dataSource {
dbCreate = "update" // one of 'create', 'create-drop','update'
url = "jdbc:mysql://localhost:3306/team_dev"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/team_test"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/team_prod"
}
}
}
|
Grails 默认要求提供三个数据库,分别用于开发、测试和产品环境。修改连接的 Driver 名称、用户名密码以及三个数据库的URL,保存。接下来分别创建上述三个数据库,并把 MySQL 的 JDBC 驱动程序拷贝到 lib 文件夹中。
接下来,重新运行项目(grails run-app),Grails 会自动为 Domain Class 创建相应的数据库表。至此,Team 的 CRUD 程序就运行在 MySQL 之上了。
2、 表单验证
Grails 对表单的验证提供了强大的支持,可以使用 Domain Class 的验证来实现表单的验证。修改 Team.groovy 文件:
class Team {
String teamName
Date foundDate
static constraints = {
teamName(size:3..50,blank:false,unique:true)
}
}
|
在 Team 类中加入个名叫 constraints 的静态 Closure,并在其中描述验证逻辑:team 的字符串长度在 3~50 之间、不能为空、而且是唯一的。(注意早期版本的 Grails 使用 length 限定字符串的长度,在 V0.5 以后改为了 size 保存 Team.groovy,重新运行 Contact,会发现验证逻辑已经可以工作了
Constraints内属性排列顺序和页面显示排序顺序一致,如果是textarea,可以设置属性的maxSize大于255
3、DB 相关操作
上面所讲的内容涵盖了 Web 开发的几个基本方面,理论上讲,掌握了这几个基本内容就可以进行 Web 开发了,但是 Grails 还提供了一些可以极大提高开发效率的内容,比如 DB 读写。DB 的读写虽然不属于 Web 范畴,但无可争议的是,几乎没有 Web 应用是不使用 DB 的。下面对 Grails 简化的 Hibernate 操作进行一下简单介绍:
表 2.DB 相关操作
save
|
保存 Domain 对象的数据到对应的库表中(可能是 Insert 也可能是 Update)
|
findBy
|
动态方法,查找并返回第一条记录,方法名可以变化
如:findByName("Tom") 会返回所有 name 属性为 Tom 的对象(只返回第一条记录)findByNameAndPassword("Tom","Mot")会返回所有 name 属性为”Tom”并且 password 属性为”Mot”的对象
|
findAllBy
|
与 findBy 类似,返回全部记录
|
executeQuery
|
执行一个 HQL 的查询(HQL 的使用,请参考 Hibernate 官方文档)
|
createCriteria
|
执行一个 Hibernate 的 Criteria 查询(下文会有一个 Criteria 的试例)
|
get
|
返回指定 id 的对象
|
count
|
执行”select count(*) from XX”的操作
|
delete
|
执行删除操作。
|
posted on 2009-12-05 18:43
唯美古典 阅读(1523)
评论(1) 编辑 收藏 所属分类:
Groovy