首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

一个容易的应用(用内置数据库)

2012-12-18 
一个简单的应用(用内置数据库)领域类:1.Race.groovypackage com.rtclass Race {String nameDate startDate

一个简单的应用(用内置数据库)
领域类:
1.Race.groovy

package com.rtclass Race {String nameDate startDateString cityString stateBigDecimal distanceBigDecimal costInteger maxRunners=100000static hasMany=[registrations:Registration]    static constraints = {name(blank:false,maxSize:50)startDate(validator:{return(it>new Date())})city()state(inList:["GA","NC","SC","VA"])distance(min:0.0)cost(min:0.0,max:100.0)maxRunners(min:0,max:1000000)    }BigDecimal inMiles(){return distance*0.6214}@Overridepublic String toString() {return "${name},${startDate.format('yyyy/MM/dd')}"}}

2.Registration.groovy
package com.rtclass Registration {Boolean paidDate dateCreatedstatic belongsTo =[race:Race,runner:Runner]static constraints = {race()runner()paid()dateCreated()}@Overridepublic String toString() {return "${race}:${runner}"}}

3.Runner.groovy
package com.rtimport java.util.Date;class Runner {String firstNameString lastNameDate dateOfBirthString genderString addressString cityString stateString zipcodeString emailstatic hasMany=[registrations:Registration]    static constraints = {firstName(blank:false)lastName(blank:false)dateOfBirth()gender(inList:['男','女'])address()city()state()zipcode()email(email:true)    }@Overridepublic String toString() {return "${firstName},${lastName}(${email}"}}

控制器:
1.RaceController.groovy
package com.rtclass RaceController {def scaffold=Race//    def index = { //render "hello world"//}}

2.RegistrationController.groovy
package com.rtclass RegistrationController {def scaffold=true//    def index = { }}

3.RunnerController.groovy
package com.rtclass RunnerController {def scaffold=true}

因为是内置数据库,所以每次重启服务器时,数据就丢失,这是grails内部机制,可以用以下办法在每次服务器启动时保存初始数据到内置数据库:
在grails-app/conf/BootStrap.groovy
import com.rt.Race import com.rt.Registration import com.rt.Runner import grails.util.GrailsUtil;class BootStrap {    def init = { servletContext ->switch(GrailsUtil.environment){case "development":def jane=new Runner(firstName:'三',lastName:'张',dateOfBirth:(new Date()-365*30),gender:'男',address:'地址',city:'hz',state:'NC',zipcode:'123456',email:'jane@163.com')jane.save()jane.errors.each {println it}def trot=new Race(name:'500长跑',startDate:(new Date()+90),city:'HZ',state:'NC',distance:500,cost:20.0,maxRunners:350)trot.save()if(trot.hasErrors()){println trot.errors}def reg=new Registration(paid:false,runner:jane,race:trot)reg.save()reg.errors.each { println it}break}    }    def destroy = {    }}

热点排行