1、 將環境部署在MySQL上
首先修改 grails-app\conf\DataSource.groovy:
dataSource {
pooled = true
driverClassName = "com.mysql.jdbc.Driver"
username = "root"
password = "122547"
}
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 = "update" // one of 'create', 'create-drop','update'
url = "jdbc:mysql://localhost:3306/team_dev"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/team_test"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/team_prod"
}
}
}
|
Grails 默認要求提供三個數據庫,分別用于開發、測試和產品環境。修改連接的 Driver 名稱、用戶名密碼以及三個數據庫的URL,保存。接下來分別創建上述三個數據庫,并把 MySQL 的 JDBC 驅動程序拷貝到 lib 文件夾中。
接下來,重新運行項目(grails run-app),Grails 會自動為 Domain Class 創建相應的數據庫表。至此,Team 的 CRUD 程序就運行在 MySQL 之上了。
2、 表單驗證
Grails 對表單的驗證提供了強大的支持,可以使用 Domain Class 的驗證來實現表單的驗證。修改 Team.groovy 文件:
class Team {
String teamName
Date foundDate
static constraints = {
teamName(size:3..50,blank:false,unique:true)
}
}
|
在 Team 類中加入個名叫 constraints 的靜態 Closure,并在其中描述驗證邏輯:team 的字符串長度在 3~50 之間、不能為空、而且是唯一的。(注意早期版本的 Grails 使用 length 限定字符串的長度,在 V0.5 以后改為了 size 保存 Team.groovy,重新運行 Contact,會發現驗證邏輯已經可以工作了
Constraints內屬性排列順序和頁面顯示排序順序一致,如果是textarea,可以設置屬性的maxSize大于255
3、DB 相關操作
上面所講的內容涵蓋了 Web 開發的幾個基本方面,理論上講,掌握了這幾個基本內容就可以進行 Web 開發了,但是 Grails 還提供了一些可以極大提高開發效率的內容,比如 DB 讀寫。DB 的讀寫雖然不屬于 Web 范疇,但無可爭議的是,幾乎沒有 Web 應用是不使用 DB 的。下面對 Grails 簡化的 Hibernate 操作進行一下簡單介紹:
表 2.DB 相關操作
save
|
保存 Domain 對象的數據到對應的庫表中(可能是 Insert 也可能是 Update)
|
findBy
|
動態方法,查找并返回第一條記錄,方法名可以變化
如:findByName("Tom") 會返回所有 name 屬性為 Tom 的對象(只返回第一條記錄)findByNameAndPassword("Tom","Mot")會返回所有 name 屬性為”Tom”并且 password 屬性為”Mot”的對象
|
findAllBy
|
與 findBy 類似,返回全部記錄
|
executeQuery
|
執行一個 HQL 的查詢(HQL 的使用,請參考 Hibernate 官方文檔)
|
createCriteria
|
執行一個 Hibernate 的 Criteria 查詢(下文會有一個 Criteria 的試例)
|
get
|
返回指定 id 的對象
|
count
|
執行”select count(*) from XX”的操作
|
delete
|
執行刪除操作。
|
posted on 2009-12-05 18:43
唯美古典 閱讀(1530)
評論(1) 編輯 收藏 所屬分類:
Groovy