上次说到了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>
代码如下
运行效果如下:
4.使用find或findAll的时候同时使用hql
这里并没有列出所有的方法,没有写出来的可以查看API文档
二 过滤器的使用
以前的web开发过滤器一般用来限制某些文件或文件夹的访问权限,grails的过滤器一般用来限制某些控制器或控制器的方法不能被直接访问。grails可以对某个或者全部控制器进行访问控制
针对这块的知识可以看看文档,文档上面貌似说的也不是很仔细。下面我写了个过滤器来限制所有控制器的访问,只要session为空并且访问的不是指定的方法就跳转到登录界面,有一点要注意就是过滤器以Filters结尾,一般来讲过滤器应放在grails-app/conf下面
下面把login控制器的代码贴出来:
至于登录页面弄的就比较简单了,我就写了一句话,下面来访问刚才的其中一个action如other/useFindAllWhere,可以看到下面的界面
接下来访问登录的方法
接下来访问之前的控制器就不会跳转到登录界面了