唯美古典
Java入门,Struts,Hibernate,Spring,Groovy,Grails
posts - 7,comments - 10,trackbacks - 0

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

3DB 相关操作

上面所讲的内容涵盖了 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 唯美古典 阅读(1511) 评论(1)  编辑  收藏 所属分类: Groovy

FeedBack:
# re: Grails学习手记
2009-12-06 00:56 | mate tee
圣杯的研究提供了组织保证,简洁的答案,以他们最重要的业务问题,他们期待。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: