1.展示效果(分頁)
2.分頁主要欄位
分頁主要欄位包括 pageSize 每頁條數、pageNum 第幾頁、startRow 當前開始頁編號、endRow 當前結束頁編號、total 總數量。主要是根據前端分頁的引數,進行處理後,返回前端正確的資料,其實是一個很常見且簡單的功能。但是是非常也是非常重要的。
pageSize 每頁條數
pageNum 第幾頁
startRow 當前開始頁編號
endRow 當前結束頁編號
total 總數量
計算 3.startRow 和 endRow
封裝成一個函式
/* 分頁公共函式*/
module.exports = handlePages = (pageNum, pageSize, total) => {
let startRow = total > 0 ? ((pageNum - 1) * pageSize + 1) : 0;
let endRow = pageNum * pageSize <= total ? pageNum * pageSize : total;
return {
pageNum,
pageSize,
recordCounts:total,
startRow,
endRow
}
}
4.介面函式中使用該函式
從前端傳參中獲取,分頁所需要的資料。
let { nickname, name, role, pageSize, pageNum } = ctx.request.body;
//此處進行處理
let pageNum1 = (pageNum - 1) * pageSize
//獲取使用者資訊列表
async getAllUserList(ctx) {
let { nickname, name, role, pageSize, pageNum } = ctx.request.body
let res = []
let pageNum1 = (pageNum - 1) * pageSize
let total = (await User.getAllUserListTotal())[0].recordCounts
if (!nickname && !name && !role) {
res = (await User.getAllUserListNotCond(pageSize, pageNum1))
} else {
res = (await User.getAllUserList(nickname, name, role, pageSize, pageNum1))
}
ctx.body = {
code: 0,
data: res.map(v => {
if (v.password) {
delete v.password
}
return v
}),
//分頁所有的引數
...handlePages(pageNum, pageSize, total)
}
}
5.分頁中的MySql語句
根據分頁查詢資料庫的資料
//根據分頁查詢使用者列表
async getAllUserListNotCond(pageSize, pageNum) {
return await query(`SELECT * FROM user LIMIT ${pageNum},${pageSize}`)
}
mySql獲取資料庫資料總條數
//獲取使用者資訊列表的總條數
async getAllUserListTotal() {
return await query(`SELECT COUNT(*) as recordCounts FROM user`)
}
關於mySql的COUNT()函式
作用:COUNT() 函式返回匹配指定條件的行數。
SQL COUNT(column_name) 語法
COUNT(column_name) 函式返回指定列的值的數目(NULL 不計入):
SELECT COUNT(column_name) FROM table_name
SQL COUNT(*) 語法
COUNT(*) 函式返回表中的記錄數:
SELECT COUNT(*) FROM table_name
SQL COUNT(DISTINCT column_name) 語法
COUNT(DISTINCT column_name) 函式返回指定列的不同值的數目:
SELECT COUNT(DISTINCT column_name) FROM table_name
6.切換分頁的效果
切換分頁後的效果 還是很正常的。
7.總結
主要是包含mysql的基本使用。目前還在學習當中,有不當的地方,歡迎指正和一起交流學習。目前正在處理許可權管理模組。下一篇文章將講解如何進行許可權控制,有興趣的可以繼續關注。