天天看點

grails過濾器和資料查詢的幾個重要方法

上次說到了grails的幾種關聯關系,除此之外grails還提供了一些動态的方法給我們使用例如findAllBy,getAll,findWhere等,個人覺得還算好用吧,下面來分享下我的學習心得

一  簡單的查詢方法

1.findAllWhere的使用

在grails中find和findAll的差別是find預設取出查詢出來的第一條的記錄,findAll則是查詢出全部記錄

where後面如果有多個條件的話就表示and

2.getAll的使用

get是根據id查詢單條資料,getAll則是查詢多條資料

3.useFindAllBy的使用

這個方法特别厲害,by後面可以加下面的這些條件

<code>LessThan</code>

<code>LessThanEquals</code>

<code>GreaterThan</code>

<code>GreaterThanEquals</code>

<code>Between</code>

<code>Like</code>

<code>Ilike</code> (i.e. ignorecase like)

<code>IsNotNull</code>

<code>IsNull</code>

<code>Not</code>

<code>Equal</code>

<code>NotEqual</code>

<code>And</code>

<code>Or</code>

代碼如下

運作效果如下:

grails過濾器和資料查詢的幾個重要方法

4.使用find或findAll的時候同時使用hql

這裡并沒有列出所有的方法,沒有寫出來的可以檢視API文檔

二  過濾器的使用

以前的web開發過濾器一般用來限制某些檔案或檔案夾的通路權限,grails的過濾器一般用來限制某些控制器或控制器的方法不能被直接通路。grails可以對某個或者全部控制器進行通路控制

針對這塊的知識可以看看文檔,文檔上面貌似說的也不是很仔細。下面我寫了個過濾器來限制所有控制器的通路,隻要session為空并且通路的不是指定的方法就跳轉到登入界面,有一點要注意就是過濾器以Filters結尾,一般來講過濾器應放在grails-app/conf下面

下面把login控制器的代碼貼出來:

至于登入頁面弄的就比較簡單了,我就寫了一句話,下面來通路剛才的其中一個action如other/useFindAllWhere,可以看到下面的界面

grails過濾器和資料查詢的幾個重要方法

接下來通路登入的方法

grails過濾器和資料查詢的幾個重要方法

接下來通路之前的控制器就不會跳轉到登入界面了

grails過濾器和資料查詢的幾個重要方法

繼續閱讀