分页
分页
排序
数据库支持在查询数据时进行排序
-- order by 字段名称 asc/desc
select * from myuser order by id asc
-- 如果有查询条件,那么排序的规则写到最后
select * from myuser where gender = 1 order by age asc
asc表示升序排列(默认)
desc表示降序排列
分页
分页:分多次查询数据,每次查询一部分数据
好处:查看方便;前端性能较高
-- limit 从第几条开始查询(从0开始), 每次查询几条
select * from myuser order by id asc limit 1, 2
从第几条开始用n表示
从第几页开始用pagenum表示
每页显示的条数用pagesize表示
*n = (pagenum-1)pagesize
前端分页需要的参数是页码和每页的条数
pagenum 页码
pagesize 每页的条数
app.get('/users', function (req, res) {
// 页码:第几页
const pagenum = req.query.pagenum
// 每页条数
const pagesize = req.query.pagesize
// 当前第几条
const n = (pagenum - 1) * pagesize
const sql = 'select * from myuser order by id limit ?, ?'
db.opreateDb(sql, [n, parseInt(pagesize)], function (ret) {
console.log(ret)
res.json(ret)
})
})
总结:前端分页一般会传递两个相关参数:页码和每页的条数,后端的第几条需要公式计算
前端分页
基于layUI提供的页面模块实现分页效果
// 分页效果
layui.laypage.render({
// 分页条渲染的位置
elem: 'page',
// 控制分页布局效果
layout: ['count', 'prev', 'page', 'next', 'limit'],
// 控制页面条数的下拉类别的数据
limits: [2, 10, 20, 30, 40, 50],
//数据总数
count: ret.total,
// 每页的条数
limit: pagesize,
// 当前页码
curr: pagenum,
// 控制页码的切换(页码变化时触发)
jump: function (obj, first) {
// 当点击切换页码时,记录最新的页码和每页条数
pagenum = obj.curr
pagesize = obj.limit
// 第一次触发该函数不调用接口
if (!first) {
// 页码和每页条数如果发生变化,需要重新调用接口
loadArticleList({
// 表示页码(表示第几页数据)
pagenum: pagenum,
// 每页展示的条数
pagesize: pagesize
})
}
}
})
总结:
1.实现页面的分页布局效果
2.控制分页的接口调用