看过几篇写grails分页的,大都把简单的东西搞复杂了,而且里面都没有对查询条件复用,在分页时,求count和list的时候where条件是一样的,好点的程序员都会把where条件复用一下,在grails里面肯定是利用闭包特性重复利用了,看看下面的代码就懂了~
def serach = {
if (!params.max) params.max = 10
if (!params.offset) params.offset = 0
if (!params.sort) params.sort = "id"
if (!params.order) params.order = "asc"
def cel = {
if(params.name){
like("name", "%${params.name}%")
}
if(params.city){
like("city", "%${params.city}%")
}
}
def results = User.createCriteria().list(params,cel)
// def cut = User.createCriteria().count(cel)
[userInstanceList: results, userInstanceTotal: results.totalCount]
}
看到没,del闭包重复利用了~,另外需要说明下:在list的时候,会返回一个PagedResultList类型,里面就有totalCount属性,所以注释的那段代码不用写,不然会发3条SQL了。
这里主要是利用闭包复用查询条件演示了。
另外说下hibernate和ibatis里面的做法,hibernate一般这样干,封装个方法:
private Criteria getCriteria(Dept dept) {
Criteria criteria = super.getSession().createCriteria(Dept.class);
criteria.addOrder(Order.desc("id")); //倒序
if (dept != null) {
if (dept.getId() != null && dept.getId() > 0) {
criteria.add(Restrictions.eq("id", dept.getId()));
}
if (StringUtils.isNotBlank(dept.getName())) {
criteria.add(Restrictions.like("name", setPropertyValue(dept.getName())));
}
if(StringUtils.isNotBlank(dept.getDesp())){
criteria.add(Restrictions.like("desp", setPropertyValue(dept.getDesp())));
}
}
return criteria;
}
这样就可以复用啦。
ibatis里面见我另外一篇文章 :http://mmblue.iteye.com/blog/852168
分享到:
相关推荐
供初学者使用,在grails中只有list(自动生成)中有分页实现,而自己新增的页面中需自己实现分页,该文档中描述了如何实现分页以及注意点
简单介绍grails的查询操作,已经类似与hibnatate的查询方式
Grails Grails Grails Grails Grails
Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南
NULL 博文链接:https://niuniufei.iteye.com/blog/2292361
常用的grails的开发的快捷键基本都在里面的 本来应该是免费使用分享,希望得点积分学更多的东西来分享欢迎下载
4.6.6 使用条件(criteria)查询 4.7 映射继承 4.8 验证领域(domain)模型 4.8.1 使用域约束(domainonstraints) 4.8.2 验证约束(constraints) 4.8.3 自定义约束(constraints) ...
Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。
Grails入门指南中文pdf -- 针对grails1.0.4更新,附加idea8 开发grails的流程
Grails1.1中文文档
Grails的出现并不是偶然的,而是随着Web应用的日趋复杂及Web2.0和Ajax的悄然兴起发展起来的。不过在我们继续介绍Grails之前,有必要先探究一下如今其他的Java框架及他们的用户体验,因为正是他们的积累,才会产生...
grails+Xfire webservice
在学习任何东西之前,最重要的是培养兴趣,Groovy世界最耀眼的技术之一--Grails相信大家早已耳闻,我将通过Grails实战系列文章 向您展现Grails的迷人风采,使您感受到Grails的魅力,以至疯狂地爱上Grails,并坠入...
grails-2.1.zip.001
详细讲解grails开发环境配置。 详细讲解grails连接mysql数据库,crud开发
Grails 中文 参考手册
grails3.2.8 part1
grails grails入门经典 grails入门 grails例子 grails资料 通过自学一点点积累起来的,相信对你有帮助的。
Grails 1.3.7英文版官方参考手册,学习Grails的权威指南