分页的SQL语句
mysql数据库,可以采用limit语句进行分页。
oracle数据库,可以采用rownum的方式进行分页。
JFinal自带分页
对象.dao.paginate(pageNumber,pageSize,select,sqlException)
//pageNumber 第几页
//pageSize 一页几条记录
controller的某个方法:
int pageNumber; //p为指定跳转的页面
if(getParaToInt("pn")==null) //前端通过pn传参
int pageSize; //指定每一页的显示数量
if(getParaToInt("ps")==null) //对一页的数量的参数进行处理
Page<Order> list4 = Order.dao.paginate(pageNumber, pageSize,"select *", "from scjhgl_xsdd"); //所有订单
int x=list4.getTotalPage(); //共展示的页数
int y=list4.getPageSize(); //页码的大小
int z=list4.getTotalRow(); //数据库中数据总共的条数
String skip="";
for(int q=1;q<=x;q++)
{
skip=skip+"<a href=\"scjhgl/index?pn="+q+"&ps="+y+"\">"+q+"</a>" ; //循环把链接输出 1 2 3 ,  空格,传ps参数是避免修改pageSize后恢复页面数改变
}
setAttr("iteration4", list4); //设置iteration4集合供前端页面获取数据库数据
setAttr("pn",pageNumber); //当前页面号供前端获取
setAttr("TotalPage",x);
setAttr("PageSize",y);
setAttr("TotalRow",z);
setAttr("skip",skip); //数字链接
renderFreeMarker("ddxi.html");
前端如果使用的是jsp页面可以如下显示:
<div class="pull-right">
<div class="dataTables_paginate paging_simple_numbers" id="dynamic-table_paginate">
<ul class="pagination">
<li><a href="scjhgl/index?pageNumber=${iteration4.pageNumber>1?iteration4.pageNumber-1:1}">上一页</a></li>
<c:forEach begin="1" end="iteration4.totalPage" varStatus="page">
<c:choose>
<c:when test="iteration4.pageNumber==page.index">
<li class="active"><a href="scjhgl/index?pageNumber=${page.index}">${page.index}</a></li>
</c:when>
<c:otherwise>
<li><a href="scjhgl/index?pageNumber=${page.index}">${page.index}</a></li>
</c:otherwise>
</c:choose>
</c:forEach>
<li><a href="scjhgl/index?pageNumber=${iteration4.pageNumber<iteration4.totalPage?iteration4.pageNumber+1:iteration4.totalPage}}">下一页</a></li>
</ul>
</div>
</div>
controller可以如下:
Integer pageNumber = getParaToInt("pageNumber");
if(pageNumber=null) pageNumber=1;
Page<Order> list4 = Order.dao.paginate(pageNumber, 5,"select *", "from scjhgl_xsdd"); //所有订单
setAttr("iteration4",list4);
render("ddxi.jsp");
-------------------------------------------------------------------------------------------------
突然发现JFinal分页的问题有这么多人搜索,看了下阅读量两千多了。。。
由于要考研,已经有段时间没有写前端的代码了,这里给大家分享当初学JFinal时看的学习视频链接:
链接: https://pan.baidu.com/s/1nvRVPm5 密码: 1234
我后来的分页是用JQuery写的,现在前端的主流搭配应该是HTML+JQuery,就算要使用jsp也可以搭配JQuery,所以分页完全可以使用JQuery来实现,代码也给大家分享下:
<div class="tab-pane" id="tab1">
<table class="table table-hover table-bordered table-striped">
<tr bgcolor="#E7E7E7">
<td height="24" colspan="6">审核新闻</td>
</tr>
<tr align="center" bgcolor="#F4F8FB" height="22">
<td width="6%">序号</td>
<td width="24%">文章标题</td>
<td width="18%">录入时间</td>
<td width="8%">栏目</td>
<td width="6%">录入者</td>
<td width="12%">操作</td>
</tr>
<tbody id="table_2"></tbody>
<tr>
<td height="24" colspan="6"></td>
</tr>
</table>
<div class="pagination">
<!-- 分页 -->
<div class="text-right">
<ul id="pagefoot2">
</ul>
</div>
</div>
<script type="text/javascript">
function SHXW(data) { //审核新闻
var dataStr = "";
$.each(data,function(i, a) {
$.each(a.paginate.list,function(i, v) { //v. _ t_news表数据 a.paginate.list v
dataStr += '<tr>';
dataStr += '<td>' + v.id + '</td>';
dataStr += '<td>' + v.title + '</td>';
dataStr += '<td>' + v.createTime + '</td>';
dataStr += '<td>' + v.newsType_id + '</td>';
dataStr += '<td>';
$.each(a.account, function(i, m) { // m. _t_user表数据 a.account --> m
if (m.id == v.user_id)
dataStr += m.name;
})
dataStr += '</td>';
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>';
dataStr += '</tr>';
})
})
$("#table_2").html(dataStr); //填充
}
function PageFoot2(data) {
var n = "";
var backword = "上一页";
var forword = "下一页";
var x = data.PageNumber; //当前页
var back; //前一页
var next; //后一页
if (x = 1) { //对上一页的判断
back = 1;
} else {
back = x - 1;
}
if (x < data.totalPage) { //对下一页判断
next = x + 1;
} else {
next = data.totalPage;
}
n += "<li onclick=\"showPage2(" + back + ")\"><a>" + backword + "</a></li> ";
for ( var a = 1; a <= data.totalPage; a++) {
if (a == data.PageNumber) {
n += "<li class=\"active\" onclick=\"showPage2(" + a + ")\"><a>" + a + "</a></li> ";
} else {
n += "<li onclick=\"showPage2(" + a + ")\"><a>" + a + "</a></li> ";
}
}
n += "<li onclick=\"showPage2(" + next + ")\"><a>" + forword + "</a></li> ";
$("#pagefoot2").html(n); //把循环好的页码给替换掉
}
function showPage2(curr) {
$.get("SH", {"pageNumber" : curr}, function(data) {
SHXW(data);
PageFoot2(data[0].paginate); //调用的PageFoot方法,循环输出页码连接
});
}
showPage2(1); //刚进入页面为第一页,列出第一页数据和页脚
function Accept(id) {
layer.confirm("确认通过?", function () {
// $.updateByUrl("user/Accept?id="+id);
window.location.href="Accept?id="+id;
});
}
function Reject(id) {
layer.confirm("确认废除?", function () {
// $.updateByUrl("user/Reject?id="+id);
window.location.href="Reject?id="+id;
});
}
</script>
public void SH(){
Page<?> dataPage= Db.paginate(getParaToInt("pageNumber", 1), 5, "SELECT *","FROM t_news where state=0"); // t_news表所有未审核数据
List<Account> acc = Account.dao.find("select * from t_user"); // 用户表所有信息,这里审核应该列出所有用户的信息
Map<String, Object> map1= new HashMap<String, Object>();
map1.put("paginate", dataPage);
map1.put("account", acc);
List<Object> data = new ArrayList<Object>();
data.add(map1);
renderJson(data);
}