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 
唯美古典 阅读(1553) 
评论(1)  编辑  收藏  所属分类: 
Groovy