您的位置:首页 > 大数据 > 人工智能

使用Grails快速开发应用程序(2)

2010-12-13 12:38 225 查看
在前一篇使用Grails快速开发应用程序(1)的应用中,我们配置好了Grials的环境。下面我们将做一些有用的事情。

首先说明我们的应用程序的需求。
我们这里有一个迷你图书馆。有大约几百本图书和几百个读者。兼职的图书管理员目前是将读者的借书信息用最传统的方式-白纸黑字来记载的。如下所示:

图书名称借阅人借书时间 还书时间
经济学 学术部 彭小米2010年12月10日2010年12月12日
c#本质论s1e188 钱小样2010年12月11日2010年12月12日
聪明的你可以分析出来。如果用软件系统来描述的话,至少要有3张表。分别是读者表、图书表和借阅记录表。
为了避免陷入系统分析的泥潭。我们先从最简单的图书这个实体类入手。在Grails当中,是以领域(Domain)编程为中心的,以领域类来作为程序的核心,从领域类来构造系统的服务类和表示层。这里图书实体类可以看做就是领域类(Domain Class)。
接下来我们就建立图书领域类:
c:> grails create-domain-class Book
实际上载建立领域类之前grails就已经帮我们建立好了如下的目录结构





其中Domain是存放领域类的。controllers存放控制器,views存放gsp文件。services表示服务层。i18n国际化。conf存放配置信息。
我们现在去domain文件夹中查看,在下面gamesys(项目名)文件夹下已经生成了一个名为Book.groovy的groovy类文件.
使用记事本打开它内容如下:

package gamesys

class Book {

static constraints = {
}
}
现在我们把图书领域类的属性加入到这个文件中去。修改后变成如下的内容:

package gamesys

class Book {
String bname //图书名称
String btype //图书分类
String publish //出版社
Date inTime //入库时间
Integer counter=0 //被借阅次数
Float price
String memo ="" //备注
static optionals=["publish","inTime","btype"] //表示publish等3个属性不是必填的
static constraints = {

}
}

在我们建立控制器类之前,我们目前还没有提到任何对象关系映射(ORM)的东西.Grails会认为所有放在Domain文件夹下来的实体类都需要持久化的操作。所有grails会自动帮我们完成所有的持久化操作。在后台grails利用了Hibernate来完成这个任务。那么我们可以先不用担心持久化了。

接下来我们要建立控制器了。
c:> grails create-domain-class Book
如果你的book的领域类建立的完全正确的话,那么将会在C:/gamesys/grails-app/controllers/gamesys文件夹下生成一个名为BookController.groovy的文件。同样用记事本打开内容如下:

package gamesys

class BookController {

def index = { }
}
这时你可以认为这时一个空的控制器,我们需要向其中加入对Book类的增删改查功能的代码。看起来不是个简单的任务。实际上我们只需要把BookController.groovy改成如下的代码

package gamesys

class BookController {

def scaffold=Book
}

当grails碰到scaffold属性时,它会自动生成对领域类的crud功能以及必要的视图。
现在该是看看我们的程序有哪些功能了。
c:>grails run-app gamesys

首先主页中有了一个控制器




点击进入能看到所有图书的列表,由于当前还没有图书,所有为空。但是你能看到相关的列名。同时有新建图书的链接



然后点击进入录入新图书界面



注意In Time这行,因为我们定义这个属性是日期型,所以grails自动加了年月日的下拉列表。
插入数据后点击图书列表就有了如下的结果:





同时你可以点击某个图书的ID来修改图书信息



修改完成最后返回图书列表。

好了,到目前为止,我们已经完成了图书类的增删改查的功能。 在以后的工作中我们还要继续完成用户类,借阅类以及3张表之间的关系。这次先到这里,休息。(未完待续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: