grails笔记-----实现动态查询并且分页
虽然grails自动生成的list页面有分页功能,但是在实际情况中那样直接分页是不够的,一般列表上面都必须有查询功能,利用grails的findAll和页面上的paginate标签、sortableColumn标签可以实现完美的查询分页功能
CustomerController内list闭包的代码
def list = {
//从页面传来的查询参数: 1._rosRequestman(申请人) 2._rosState_id(执勤状态) 3._rosLastchangefrom(开始时间) 4. _rosLastchangeto(结束时间) 5._rosDel(是否查询全部)
def df = new SimpleDateFormat('yyyy-MM-dd')
if (!params.max) params.max = '10'
if (!params.sort) params.sort = 'id'
if (!params.offset) params.offset = '0'
if (!params.order) params.order = 'asc'
if (!params._rosRequestman) params._rosRequestman = ''
//涉及到种类查询不能用like,所以先做好sql段然后拼接到后面sql中去(后面用红色字体标出)
String rosStateSql = params._rosState_id?" and str(r.rosState) = '${params._rosState_id}' ":""
//查询时间: 如果开始时间不填就默认成1970年,如果结束时间不填就默认为当前系统时间
java.util.Date _rosLastchangefrom = params._rosLastchangefrom?df.parse(params._rosLastchangefrom) :df.parse('1970-01-01')
java.util.Date _rosLastchangeto = params._rosLastchangeto?df.parse(params._rosLastchangeto):new Date()
//由于我做了逻辑删除,表中rosDel这个字段标示是否被删除,当要全部查询的时候可以吧删除的数据也查出来,这里结合了grails中的checkBox标签
def _rosDelState = (params._rosDel == 'on')?'':'0'
//results是查询结果