`
魔力猫咪
  • 浏览: 107084 次
  • 来自: 北京
社区版块
存档分类
最新评论

猫学Grails之完善编写的第一个程序和数据库设置

阅读更多
  在上一篇中程序已经基本成型了。但是还有很多地方需要完善。Grails的缺省设置是一个HQLDB的内存数据库。每次启动时建立,关闭时销毁,不能保留下来。而且输入数据的校验目前还只局限在是否为Null。
  猫咪先来说如何修改数据库配置。首先在机器上安装一个MySQL数据库,当然别的数据库也可以。不过如果装了Oralce和DB2,机器配置又低跑不动别找我。数据库配置的结构已经和书上说得完全不一样了。“grails-app\conf”下并没有书上说的DevelopmentDataSource.groovy、TestDataSource.groovy和ProductionDataSource.groovy这三个文件。只有一个把这三个配置放到一起的DataSource.groovy。
内容如下:
//缺省的数据库配置模板 
dataSource { 
pooled = false 
driverClassName = "org.hsqldb.jdbcDriver" 
username = "sa" 
password = "" 
} 
//Hibernate缓存配置 
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 = "create-drop" // one of 'create', 'create-drop','update' 
url = "jdbc:hsqldb:mem:devDB" 
} 
} 
//测试环境配置 
test { 
dataSource { 
dbCreate = "update" 
url = "jdbc:hsqldb:mem:testDb" 
} 
} 
//生产环境配置 
production { 
dataSource { 
dbCreate = "update" 
url = "jdbc:hsqldb:file:prodDb;shutdown=true" 
} 
} 
} 
 
  很好改的。如果要把开发数据库换成MySQL只要把开发部分的数据库配置改了就是了。这种配置格式,经常修改Unix下各种软件的配置的人应该很熟悉。
首先把MySQL的数据库驱动拷贝到lib目录下,然后修改配置文件的开发数据库配置。
development { 
dataSource { 
dbCreate = "update" 
pooled = true 
driverClassName = "com.mysql.jdbc.Driver" 
username = "root" 
password = "****" 
url = "jdbc:mysql://localhost:3306/MyMiao" 
} 
} 


  和一般的数据库连接池的设置没什么不一样的。不过“dbCreate”要注意。它有三个值:“create”(如果数据库不存在则创建)、“create-drop”(启动的时候建立数据库,结束的时候销毁数据库)、“update”(当数据库表和程序不一致时,修改数据库结构)。不过我不能在MySQL数据库上使用“create”和“create-drop”这两个属性。一用就出现异常。看来目前这两个属性只用于内嵌的HQLDB。不过MySQL倒不用建表,只要建立一个空数据库就可以了。系统在启动的时候,会自动在数据库里建立表(不能建立数据库)。如果大家使用其他的数据库,可以试试看能否自动建库。如果你不想Grails对你的数据库动手动脚,把这条去了就是了。
  下面是对领域对象建立验证和页面的属性显示顺序。如果验证错误,是无法写入数据库的。
在Race类中添加下面的代码:

static constraints ={ 
name(maxlength:50,blank:false)//名字最长50,不许为Null 
startDateTime(validator:{return (it>new Date())})//不能输入过去的时间。这是自定义验证,返回布尔值。it表示这个属性。 
city(maxLength:30,blank:false)//最长30,不能为Null 
state(inList:["BeiJing","TianJin","ShangHai","ChongQing"],blank:false)//只能输入的值必须在四地中,不能为Null。书上是美国的四个州。我用咱们直辖市代替了。不过目前还不能在这里写中文。页面上能正确显示,但是验证过不去 
maxRunners() 
distance(min:3.1f,max:100f)//跑道长度。最小3.1最长100。(100英里,即160千米。快4个马拉松了) 
cost(min:0f,max:999.99f)//费用必须在0到999.99美元之间 
} 

 

  

  constraints同时也决定了属性出现在页面上的顺序。如果只是想规定某个属性的位置但是没有验证,那么直接放进去就可以了,比如maxRunners。注:这个顺序是输入页面的顺序。然后另一个对象也加入验证。

static constraints = { 
name(maxLength:50,blank:false)//最长50,不能为Null 
dateOfBirth(nullable:false)//非空 
gender(inList:["M","F"])//输入只能是两者之一 
postalAddress(maxLength:255)//最长255 
emailAddress(maxLength:50,email:true)//最长50,符合Email格式 
race(nullable:false)//非空 
} 


  看记录详细信息的时候,“Registration : 1”之类的东西很难看吧。解决的方法就是重写toString()方法。

Race 
String toString(){"${this.name}:${this.city}:${this.state}"} 
Registration 
String toString(){"${this.name}:${this.emailAddress}"} 


  好了最初的架子就到此为止了。大家可以多试试。

 

分享到:
评论
1 楼 topbox163 2012-12-17  
非常感谢感谢,终于把数据弄出来了,之前一起出不来,希望加下我:123296959,最近别人给了一个项目给我弄,时间相当的紧

相关推荐

    Grails从入门指南(第二版)

    3. **第一个Grails应用**:通过创建一个简单的“Hello, World!”应用,体验Grails的快速开发流程,理解Grails脚手架和自动代码生成。 4. **Grails MVC**:深入理解Model-View-Controller架构,包括Domain Classes...

    第 1 部分: 使用 Grails 和 Flex 构建 Web 应用程序

    【标题】: "使用 Grails 和 Flex 构建 Web 应用程序" 是一个主题,主要探讨了如何结合两种技术来开发高效的Web应用程序。Grails是一个基于Groovy语言的开源Web应用框架,它简化了Java平台上的开发流程,而Flex是...

    Grails入门指南中文第二版.pdf

    通过阅读《Grails入门指南中文第二版》,你将能够熟练地搭建Grails开发环境,创建并运行第一个Grails应用,掌握MVC模式下的开发流程,以及利用Grails的强大功能进行高效开发。这本书对于想要进入Grails世界的开发者...

    Grails入门精通及中文API

    3. 创建第一个Grails应用,了解MVC结构。 4. 学习GSP和模板引擎,掌握动态页面的生成。 5. 深入研究GORM,理解数据持久化机制。 6. 探索Grails插件,找到适合项目需求的功能扩展。 7. 阅读Grails中文API文档,解决...

    grails 中文第二版

    - GORM是Grails的核心特性之一,用于处理对象与数据库之间的映射。 - 支持基本的CRUD操作。 **领域(Domain)建模** - 领域类是GORM的基础,代表数据库中的实体。 - 支持多种关联方式,如多对一、一对多等。 - 支持...

    Grails入门指南-中文版

    #### 四、创建第一个Grails应用 **1. 创建项目** - 使用命令行工具创建一个新的Grails项目。 - 示例命令:`grails create-app myapp` **2. 领域模型** - 定义应用程序的核心实体(例如User、Product等)。 - ...

    the definitive guide to grails 2

    Grails框架是建立在Groovy编程语言之上的一个完整的Web应用开发框架,它结合了Java平台的优势和动态语言的灵活性。Grails采用约定优于配置的原则,简化了开发流程,使开发者能够快速地构建高性能的Web应用程序。该...

    Grails基础教程.pdf

    - **编写第一个过滤器**:创建一个简单的过滤器来处理特定的请求。 - **过滤器的URL选择**:如何配置过滤器只对特定的URL路径生效。 **7.7 创建自定义的URL映射** - **myHubbub:滚动你自己的静态链接**:自定义...

    grails app

    创建一个Grails应用的第一步通常是使用`grails create-app`命令,这会生成项目的目录结构和基础文件。虽然我们没有图片,但我们可以从文件名"Hello"推测,这可能是应用的初始控制器或服务,或者是一个简单的"Hello,...

    grails-5.1.2.zip

    Grails 是一个基于Groovy语言的开源Web应用框架,它构建于Java平台之上,旨在简化开发过程并提高生产力。在Grails 5.1.2这个版本中,我们看到一些关键特性和改进,这些特性有助于开发者更加高效地构建动态、灵活的...

    Grails入门指南第2版

    该书在第一版的基础上进行了更新,以适应Grails框架的最新发展,使其成为学习Grails的理想起点。 **Grails概述** Grails是一个基于Groovy语言的开源Web应用框架,它构建于Java平台之上,利用了Spring框架、...

    grails 入门 大全

    **Grails 入门大全** Grails 是一个基于 Groovy 语言的开源 Web 应用框架,它构建在 Spring Boot 之上,旨在提高开发效率,提供简洁、灵活的...记得实践是检验真理的唯一标准,动手尝试编写你的第一个 Grails 应用吧!

    Grails 下拉框联动最优实现

    在IT行业中,Grails是一个基于Groovy语言的开源Web应用框架,它提供了高效的开发环境,使得开发者能够快速构建复杂的Web应用程序。"Grails下拉框联动最优实现"这个主题聚焦于如何在Grails应用中优雅地实现下拉框...

    Grails权威指南

    第1章 寻找grails之旅  1.1 java的困惑  1.2 webc2.0时代  1.3 java的力量  1.4 什么是grails  1.4.1 与java集成  1.4.2 简单而强大  1.4.3 吸取的经验教训  1.5 使用grails的原因 ...

    Grails基础教程

    - **编写第一个过滤器**:通过实例演示了如何编写过滤器来拦截请求。 - **过滤器的URL选择**:介绍了如何配置过滤器来处理特定的URL请求。 **7.7 创建自定义的URL映射** - **myHubbub:滚动你自己的静态链接**:...

    Getting-Started-with-Grails-Chinese.rar_Getting Started_grails

    本书将引导读者逐步了解Grails的基本概念和实践操作,包括环境搭建、创建第一个Grails应用、控制器和视图的使用、服务层的实现、领域模型的定义、数据库交互、GORM(Grails Object-Relational Mapping)框架的使用...

    Grails技术精解与web开发实践2-10章

    3. **第一个Grails应用**:通过创建一个简单的应用,读者将学习Grails的基本项目结构,如`grails-app`目录下的各个子目录,以及`BuildConfig.groovy`等配置文件的作用。还将引导读者运行应用,理解Grails的命令行...

    Beginning_Groovy_and_Grails开源项目教学代码第二部分

    Groovy是一种简洁、动态的Java平台上的编程语言,它提供了更简单的语法和更高的生产力,而Grails则是一个基于Groovy的全栈Web开发框架,它简化了构建复杂的Web应用程序的过程。 在本教学代码的第二部分中,我们将...

Global site tag (gtag.js) - Google Analytics