分页的SQL语句
mysql数据库,可以采用limit语句进行分页。
oracle数据库,可以采用rownum的方式进行分页。
JFinal自带分页
对象.dao.paginate(pageNumber,pageSize,select,sqlException)
//pageNumber 第几页
//pageSize 一页几条记录
controller的某个方法:
[java] view plain copy
1.int pageNumber; //p为指定跳转的页面
2. if(getParaToInt("pn")==null) //前端通过pn传参
3. int pageSize; //指定每一页的显示数量
4. if(getParaToInt("ps")==null) //对一页的数量的参数进行处理
5.
6. Page<Order> list4 = Order.dao.paginate(pageNumber, pageSize,"select *", "from scjhgl_xsdd"); //所有订单
7. int x=list4.getTotalPage(); //共展示的页数
8. int y=list4.getPageSize(); //页码的大小
9. int z=list4.getTotalRow(); //数据库中数据总共的条数
10.
11. String skip="";
12. for(int q=1;q<=x;q++)
13. {
14. skip=skip+"<a href=\"scjhgl/index?pn="+q+"&ps="+y+"\">"+q+"</a>" ; //循环把链接输出 1 2 3 ,  空格,传ps参数是避免修改pageSize后恢复页面数改变
15. }
16. setAttr("iteration4", list4); //设置iteration4集合供前端页面获取数据库数据
17. setAttr("pn",pageNumber); //当前页面号供前端获取
18. setAttr("TotalPage",x);
19. setAttr("PageSize",y);
20. setAttr("TotalRow",z);
21. setAttr("skip",skip); //数字链接
22. renderFreeMarker("ddxi.html");
前端如果使用的是jsp页面可以如下显示:
[java] view plain copy
1.<div class="pull-right">
2. <div class="dataTables_paginate paging_simple_numbers" id="dynamic-table_paginate">
3. <ul class="pagination">
4. <li><a href="scjhgl/index?pageNumber=${iteration4.pageNumber>1?iteration4.pageNumber-1:1}">上一页</a></li>
5. <c:forEach begin="1" end="iteration4.totalPage" varStatus="page">
6. <c:choose>
7. <c:when test="iteration4.pageNumber==page.index">
8. <li class="active"><a href="scjhgl/index?pageNumber=${page.index}">${page.index}</a></li>
9. </c:when>
10. <c:otherwise>
11. <li><a href="scjhgl/index?pageNumber=${page.index}">${page.index}</a></li>
12. </c:otherwise>
13. </c:choose>
14. </c:forEach>
15. <li><a href="scjhgl/index?pageNumber=${iteration4.pageNumber<iteration4.totalPage?iteration4.pageNumber+1:iteration4.totalPage}}">下一页</a></li>
16. </ul>
17. </div>
18.
19.</div>
controller可以如下:
[java] view plain copy
1.<span style="white-space: pre;"> </span>Integer pageNumber = getParaToInt("pageNumber");
2. if(pageNumber=null) pageNumber=1;
3. Page<Order> list4 = Order.dao.paginate(pageNumber, 5,"select *", "from scjhgl_xsdd"); //所有订单
4. setAttr("iteration4",list4);
5. render("ddxi.jsp");
6.
这里给大家分享当初学JFinal时看的学习视频链接:
链接: https://pan.baidu.com/s/1nvRVPm5 密码: 1234
我后来的分页是用JQuery写的,现在前端的主流搭配应该是HTML+JQuery,就算要使用jsp也可以搭配JQuery,所以分页完全可以使用JQuery来实现,代码也给大家分享下:
[html] view plain copy
1.<div class="tab-pane" id="tab1">
2. <table class="table table-hover table-bordered table-striped">
3. <tr bgcolor="#E7E7E7">
4. <td height="24" colspan="6">审核新闻</td>
5. </tr>
6. <tr align="center" bgcolor="#F4F8FB" height="22">
7. <td width="6%">序号</td>
8. <td width="24%">文章标题</td>
9. <td width="18%">录入时间</td>
10. <td width="8%">栏目</td>
11. <td width="6%">录入者</td>
12. <td width="12%">操作</td>
13. </tr>
14.
15.
16. <tbody id="table_2"></tbody>
17.
18.
19. <tr>
20. <td height="24" colspan="6"></td>
21. </tr>
22. </table>
23.
24.
25. <div class="pagination">
26. <!-- 分页 -->
27. <div class="text-right">
28. <ul id="pagefoot2">
29.
30.
31. </ul>
32. </div>
33. </div>
<script type="text/javascript">
2. function SHXW(data) { //审核新闻
3. var dataStr = "";
4. $.each(data,function(i, a) {
5. $.each(a.paginate.list,function(i, v) { //v. _ t_news表数据 a.paginate.list v
6. dataStr += '<tr>';
7.
8. dataStr += '<td>' + v.id + '</td>';
9. dataStr += '<td>' + v.title + '</td>';
10. dataStr += '<td>' + v.createTime + '</td>';
11. dataStr += '<td>' + v.newsType_id + '</td>';
12.
13. dataStr += '<td>';
14. $.each(a.account, function(i, m) { // m. _t_user表数据 a.account --> m
15. if (m.id == v.user_id)
16. dataStr += m.name;
17. })
18. dataStr += '</td>';
19.
20. dataStr += '<td><a href="javascript:Accept('+v.id+')" target="_top" class="btn btn-primary">通过</a> <a href="javascript:Reject('+v.id+')" target="_top" class="btn btn-danger">不通过</a></td>';
21.
22. dataStr += '</tr>';
23. })
24. })
25. $("#table_2").html(dataStr); //填充
26. }
27.
28. function PageFoot2(data) {
29. var n = "";
30. var backword = "上一页";
31. var forword = "下一页";
32. var x = data.PageNumber; //当前页
33. var back; //前一页
34. var next; //后一页
35. if (x = 1) { //对上一页的判断
36. back = 1;
37. } else {
38. back = x - 1;
39. }
40. if (x < data.totalPage) { //对下一页判断
41. next = x + 1;
42. } else {
43. next = data.totalPage;
44. }
45.
46. n += "<li onclick=\"showPage2(" + back + ")\"><a>" + backword
47. + "</a></li> ";
48. for ( var a = 1; a <= data.totalPage; a++) {
49. if (a == data.PageNumber) {
50. n += "<li class=\"active\" onclick=\"showPage2(" + a
51. + ")\"><a>" + a + "</a></li> ";
52. } else {
53. n += "<li onclick=\"showPage2(" + a + ")\"><a>" + a
54. + "</a></li> ";
55. }
56. ;
57. }
58. n += "<li onclick=\"showPage2(" + next + ")\"><a>" + forword
59. + "</a></li> ";
60.
61. $("#pagefoot2").html(n); //把循环好的页码给替换掉
62. };
63.
64. function showPage2(curr) {
65. $.get("SH", {"pageNumber" : curr}, function(data) {
66. SHXW(data);
67. PageFoot2(data[0].paginate); //调用的PageFoot方法,循环输出页码连接
68. });
69. }
70. showPage2(1); //刚进入页面为第一页,列出第一页数据和页脚
71.
72. function Accept(id) {
73. layer.confirm("确认通过?", function () {
74. // $.updateByUrl("user/Accept?id="+id);
75. window.location.href="Accept?id="+id;
76. });
77. }
78. function Reject(id) {
79. layer.confirm("确认废除?", function () {
80. // $.updateByUrl("user/Reject?id="+id);
81. window.location.href="Reject?id="+id;
82. });
83. }
84. </script>
[java] view plain copy
1.public void SH(){
2. Page<?> dataPage= Db.paginate(getParaToInt("pageNumber", 1), 5, "SELECT *","FROM t_news where state=0"); // t_news表所有未审核数据
3. List<Account> acc = Account.dao.find("select * from t_user"); // 用户表所有信息,这里审核应该列出所有用户的信息
4. Map<String, Object> map1= new HashMap<String, Object>();
5. map1.put("paginate", dataPage);
6. map1.put("account", acc);
7. List<Object> data = new ArrayList<Object>();
8. data.add(map1);
9. renderJson(data);
10. }
[html] view plain copy
1.<pre snippet_file_name="blog_20170308_5_4948784" code_snippet_id="2252264"></pre>
2.<pre></pre>
3.<pre></pre>
4.<pre></pre>