本篇内容介绍了“Grails复用查询条件并分页的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联主要从事网站设计、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务仁布,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
看过几篇写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; }
这样就可以复用啦。
“Grails复用查询条件并分页的实现方法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文名称:Grails复用查询条件并分页的实现方法
文章位置:https://www.cdcxhl.com/article42/gppphc.html
成都网站建设公司_创新互联,为您提供云服务器、动态网站、外贸建站、网站排名、网站建设、网站收录
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联