我所在的部门所用的框架是grails。今天就来说说用grails框架如何对列表进行分页。
1 在controller中 写上如下代码。意思为从每页15行。
params.max = Math.min(params.max ? params.max.toInteger() : 15, 100)
params.offset = params.offset ? params.offset.toInteger() : 0;
def offsetAfter = params.offset + 15
2 对sql语句进行分页
def rowsql="""SELECT * FROM (SELECT A.*,ROWNUM RN FROM("""+sql+""")A
WHERE ROWNUM <= ${offsetAfter})WHERE RN> ${params.offset}""";
3. 计算sql语句执行的总数
def sqlTotal=""" select count(*) total from ("""+sql+""")""";
说明:在grails中sql语句用""" """ 三个双引号括起来是因为这样的话 ,不过sql语句是否换行,都会把它当做一条sql语句还执行。如果只写了一个双引号的话,一旦换行 程序不会把它当做一条sql语句执行,继而出错
4.返回total给页面
[total:total]
5.在页面接受
<div class="paginateButtons">
<g:paginate total="${total}" />
</div>
好啦。。现在就已经大功告成了。
当然,如果你的list页面有查询条件,又想分页的时候点击下一页,查询条件仍然存在。你要做的事情有两个
1.在controller中将值传给页面
2 在页面的时候把值传给controller如:
<div class="paginateButtons">
<g:paginate total="${total}" params="[lineId:lineId,choose:choose,addressCode:addressCode]" />
</div>
OK 搞定!