1.1.1
基本说明:
1、 分页的分类:物理分页(每次分页都要请求数据库) ;逻辑分页(将记录一次读取出来,可以采取缓存等机制,每次显示从缓存中读)
Limit :物理分页,执行一次页面的分页访问,就向数据库发送一条请求;比较耗费服务器的资源;
逻辑分页: select 列 from 表
2、mysql中经典的分页查询语句(物理分页) select 列(多个列) from 表 limit start,pagesize
select 列(多个列) from 表 limit 0,5
1.1.1
数据库访问通用类使用:
3、数据库访问的通用的分页类:
BaseDao需要调用的方法:给他参数,page(1) ,pageSize(5)、
分页的方法返回的数据PageData:
(2)用Jquery实现
上一页,下一页的实现
<script>
$(function(){
//如果当前页 已经是最后一页了
if(${pd.page >= pd.totalPage})
{
//下一页 样式设置
$("#nextPage").css("color","gray");
//pointer-events 不能点击了 ,没有测试所有的浏览器
$("#nextPage").css("pointer-events","none");
}
//如果当前页 已经是第一页了
if(${pd.page <= 1})
{
//上一页 样式设置
$("#prePage").css("color","gray");
$("#prePage").css("pointer-events","none");
}
//分页页码点击
$(".pageNo").click(function(){
location.href = "UsersController?op=queryByPage&page=" + $(this).text();
});
//下一页
$("#nextPage").click(function(){
location.href = "UsersController?op=queryByPage&page=" + ${pd.page+1};
});
//上一页
$("#prePage").click(function(){
location.href = "UsersController?op=queryByPage&page=" + ${pd.page-1};
});
});
</script>
分页加模糊查询
控制器:
else if (“queryByPage”.equals(op)) {
int page = 1;
int pageSize = 5;
String userNameLike = "";
// 获取页面传递过来的page[页码]参数
if (null != request.getParameter("page")) {
page = Integer.parseInt(request.getParameter("page"));
// 控制器的校验
if (page < 1) {
page = 1;
}
// page 的值 和 总页数 这里先遗留这个问题
}
// 获取页面传递过来的pageSize[每页显示的记录数]参数
if (null != request.getParameter("pageSize")) {
pageSize = Integer.parseInt(request.getParameter("pageSize"));
}
// 获取页面传递过来的userNameLike (模糊查询)参数
if (null != request.getParameter("userNameLike")) {
userNameLike = request.getParameter("userNameLike");
}
// 分页查询
PageData<Users> pd = us.getUsersByPage(page, pageSize,userNameLike);
// 存储信息
request.setAttribute("pd", pd);
//将模糊出查询的字符串 也转发回来
request.setAttribute("userNameLike", userNameLike);
// forward 转发
request.getRequestDispatcher("mvc/showUsers_page.jsp").forward(request, response);
}
扩展:分页插件
https://www.layui.com/demo/laypage.html
https://www.layui.com/doc/modules/laypage.html
下载layui: