此文仅为本人初次学习和实践G&G的心得体会以及开发经验的记录,旨在将我的感受保留下来以备未来查阅。欢迎大家指正和补充:)
一、Domain Class
1. 对于一个领域类对应一个表的情况最好解决,每一个字段对应一列,是最爽的形式
2. 每个领域类最好重写toString()方法,目的在于关联的显示时展现有意义的文字而不是简单的ID
3. static constraints = {}有两个作用,一是规定了字段在页面中的顺序;另外就是数据约束在这里定义。PS:一定要保证拼写正确,我就因为拼写错误导致运行不成功,郁闷了很久才找到错误原因。
4. 字段的定义一定要保证其不是数据库中的关键字!!这点很重要,我已经两次在这方面出错了。一次是desc,一次是order
5. 在数据验证中,blank是针对String类型的不为空,而其他类型不为空则要用nullable,如Integer。常用的还有maxSize,也是针对String类型的长度。如无必需最好不要大于255,若大于则数据库中类型不是Varchar了。
6. 在一对多关系中,一方要有hasMany闭包,这样可以在内容显示时包括多方的链接;多方中belongsTo是可选的,如果加上则会被级联删除。
7. static mapping 闭包可以修改默认的字段与表的对应方式,尤其在处理遗留数据库时有用
二、数据库访问
1. 数据源配置:在grails-app/conf/DataSource.groovy里配置,dbCreate
的值在不同的环境下会产生不同的行为。它是底层的 hibernate.hbm2ddl.auto
设置的别名,负责指定 Hibernate 在幕后如何管理表。将 dbCreate
设为 create-drop
create
,那么 Hibernate 会在需要的时候创建新表和修改现有表,但是重新启动之间的所有记录都会被删除。production
模式的默认值 — update
— 会在重新启动之间保持所有数据,也会在需要的时候创建或修改表。 ,就是告诉在启动的时候创建表,在关闭的时候删除表。如果将值改为
2. 注意要把访问数据的jar包拷贝到lib目录中。
3. 可添加自定义环境,如beta,同development等设置,在启动程序时grails -Dgrails.env=beta run-app
4. 数据库模式还是要先建立好的,Grails只能修改表而不是数据库
5. 一般的run-app使用development数据配置,打成war包后使用production配置。要保证lib中有数据访问驱动
6. 数据库连接字符串要写对格式,如mysql的:jdbc:mysql://localhost:3306/trip
三、页面修改
1. 页面跟普通JSP页面没有太多区别,一般内置标签<g:**>无需导入就可直接使用,自己编写的Tag只要按照规约放在指定的目录下即可直接使用。
2. 最爽的一点是页面修改无需重启服务器,因而修改后直接刷新就能看到效果
3. 一般生成的页面上都有ID这个字段,最好都删去避免出错
四、控制器及业务逻辑
1. 有两种默认控制器执行,一是转到index闭包;另外就是直接指定
2. 不是所有闭包都要有对应的视图,可以转到任何视图,render是渲染的意思,redirect是重定向 。这两种方式都可以用flash.message来显示提示信息
3. 可以直接使用Java语言中的类库或Groovy语言。在访问数据库方面还是Groovy比较方便,例子如下:
首先要import groovy.sql.Sql
def db = Sql.newInstance(DB,ID,PASSWORD,DRIVER)
def result = db.execute("DELETE FROM member WHERE id=${m.homeId}")
4. 保持Domain时hasErrors()只是检查对象是否构造无误,而save()才是真正进行约束检查
五、其他
1. 所有文件最好都用utf-8格式保存,这样能对中文友好支持!
2. i18n文件已经有多个语言版本,根据本机配置会自动选择,在中国就使用messages_zh_CN.properties
3. 如User中的username的非空提示就应为:User.username.blank = 用户名不能为空。无需自己进行本地转化,启动时系统会自动为你转换。具体参考官方文档
version 1.1
未完待续...
分享到:
相关推荐
### Groovy和Grails配置方法 #### 一、Groovy与Grails简介 Groovy是一种强大的面向对象编程语言,它运行在Java平台上,并且能够直接与Java代码进行交互。Groovy支持函数式编程特性,拥有丰富的语法糖以及简洁的...
[Apress] Groovy, Grails, Griffon 入门教程 (英文版) [Apress] Beginning Groovy, Grails and Griffon (E-Book) ☆ 出版信息:☆ [作者信息] Vishal Layka, Christopher M. Judd, Joseph Faisal Nusairat, Jim ...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part1 共两个压缩包,解压后将扩展名.zip.bak改为.zip再次解压。
Groovy和Grails是两个密切相关的开源技术,主要用于构建现代、高效的Java平台应用程序。Groovy是一种动态、灵活的编程语言,它与Java高度兼容,但语法更为简洁,提供了更多的灵活性。而Grails则是一个基于Groovy的...
《初学者指南:Groovy与Grails》一书由Christopher M. Judd、Joseph Faisal Nusairat和James Shingler共同编写,是专为Java开发者设计的实用教程,旨在帮助他们掌握敏捷Web开发所需的Groovy和Grails技能。本书从入门...
### 关于《从新手到专家:Groovy与Grails入门》 #### 一、书籍概述 本书《Beginning Groovy and Grails, From Novice to Professional》由Christopher M. Judd、Joseph Faisal Nusairat 和 James Shingler共同编写...
- **领域模型**:代表数据库表的实体类,使用GORM(Groovy on Rails ORM)进行管理。 - **控制器**:处理HTTP请求并将数据传递给视图层。 - **视图**:使用GSP(Groovy Server Pages)或FreeMarker等模板引擎来...
Eclipse 插件 Grails(Groovy)是一个强大的开发工具,它使得在Eclipse环境中进行Groovy和Grails应用的开发变得更为便捷。Groovy是一种动态、面向对象的编程语言,而Grails则是一个基于Groovy的开源Web应用框架,...
Groovy 和 Grails 与 Ruby on Rails 一样,都追求开发效率和简洁性,但它们建立在不同的语言基础之上。Ruby on Rails 是基于 Ruby 语言,而 Grails 则是基于 Groovy。虽然 Grails 受到 Rails 的启发,但它采用了 ...
### 敏捷开发与Groovy及Grails技术详解 #### 一、敏捷开发与Groovy及Grails概览 在《Agile Development with Groovy and Grails》这本著作中,作者Christopher M. Judd(Judd Solutions, LLC 的总裁兼顾问)详细...
groovy-grails-tool-suite-3.6.4.RELEASE-e4.4.2-win32-x86_64.part2 共两个包,解压后需要将扩展名.zip.bak改名为.zip重新解压。 http://dist.springsource.com/release/STS/3.8.1.RELEASE/dist/ e4.6/spring-tool-...
Groovy / Grails F4 The Best Web Server
Groovy / Grails F2 The Best Web Server
Groovy / Grails F3 The Best Web Server
[Apress] Groovy & Grails 新手进阶教程 (英文版) [Apress] Beginning Groovy and Grails From Novice to Professional (E-Book) ☆ 出版信息:☆ [作者信息] Christopher M. Judd, Joseph Faisal Nusairat, ...
Groovy和Grails是两个密切相关的Java平台上的开发工具,它们在构建现代Web应用程序中扮演着重要角色。Groovy是一种敏捷、动态的语言,它旨在减少Java的样板代码,同时提供了可选的动态类型、闭包、领域特定语言...
《构建集成Node.js与Groovy on Grails的Gumball Machine应用》 在IT领域,跨平台、高效能的应用开发是开发者不断追求的目标。在这个背景下,“grails_nodejsApp”项目是一个独特的尝试,它结合了Groovy on Grails和...
Groovy Grails , The best web server.