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

在前一篇使用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就已经帮我们建立好了如下的目录结构

gamesys 
 
其中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

首先主页中有了一个控制器 
 
gamesyscontrollerwater
点击进入能看到所有图书的列表,由于当前还没有图书,所有为空。但是你能看到相关的列名。同时有新建图书的链接
 gamesysbooklist3
然后点击进入录入新图书界面
createnewbook
注意In Time这行,因为我们定义这个属性是日期型,所以grails自动加了年月日的下拉列表。
插入数据后点击图书列表就有了如下的结果:

gamesysbooklist2_water

同时你可以点击某个图书的ID来修改图书信息
gamesysbookupdatewater 
修改完成最后返回图书列表。

   好了,到目前为止,我们已经完成了图书类的增删改查的功能。 在以后的工作中我们还要继续完成用户类,借阅类以及3张表之间的关系。这次先到这里,休息。(未完待续)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值