分頁查詢
- 分頁查詢語句
- 項目中添加分頁功能
- 按鈕設置
- 前后端代碼
- 功能實現
分頁查詢語句
限制查詢的 sql 語句:
select * from student limit 0,4
sql 查詢結果如下:
分頁查詢的每一頁都對應一行 sql 語句,若每一行都寫單獨對應的 sql 語句不僅重復量大而且還需要人工計算頁數,不能靈活調整非常不方便,因此我們需要對分頁查詢的 sql 語句進行歸納總結:
其中 page 表示當前頁碼, pageSize 表示一頁的大小
select * from student limit (page-1),pageSize
這樣只需要傳兩個參數就可以動態進行分頁查詢
項目中添加分頁功能
按鈕設置
分頁功能要有頁碼顯示,我們需要在前端設置按鈕樣式:
效果圖:
前后端代碼
搜索操作需要搜索數據還需要搜索頁碼數值,搜索數據和搜索頁碼都需要 page 和 pageSize 值,所以我們可以在 js 文件中直接先將 page 和 pageSize 設置為全局變量傳給后端,如圖:
分頁查詢的加載數據函數:
分頁查詢的加載頁碼函數:
注意這里加載頁碼函數沒寫完,因為我們不知道具體是幾頁,需要后端給返回值再進行添加
我們可以將排序和分頁代碼進行 sql 繼續拼接,但是要注意數據傳到后端是字符串形式,字符串不能進行數字運算,Integer.parseInt()
方法可以將數字形字符串返回為int類型的數據。
sql+=" order by id limit "+(Integer.parseInt(page)-1)*Integer.parseInt(pageSize)+","+pageSize;
搜索的加載數據和加載頁碼條件需要保持一致同步,所以這兩個兩個文件代碼內容類似,代碼如下:
搜索數據功能(IndexServlet.java)返回的的是需要所有數據的對象,搜索頁碼功能(GetCount.java)返回的是數量,
加載頁碼雖然返回的是數量但是它是以 json
的形式返回的數據,打印返回值value如下:
value.num
才可以獲取到具體的數量值,Math.ceil()
是 js 中的方法表示向上取整,這樣就可以得到頁碼數量:
Math.ceil(value.num/pageSize)
完整加載頁碼函數:
功能實現
進入頁面的時候以及點擊搜索之后都需要知道頁碼數量,所以都需要調函數
這里點擊搜索功能設置 page = 1
是因為我們需要從結果的 第一頁展示 此外還有 page 重置 的作用
任意頁碼切換:
數據和樣式都需要切換,在HTML中我們將class值為 current 的添加了加深樣式,那么樣式切換只需要動態地將其他的兄弟節點的current class值刪掉僅保留該節點的current class值就可以了
首頁尾頁切換:
其中首頁切換中 $(".item").eq(0)
中 .eq(i) 表示從匹配的元素集合中選取索引為 i 的元素(索引從 0 開始),也可以使用 $(".item").first()
如何進行尾頁切換,元素有幾個 item 屬性值那么就有幾頁,所以找頁碼數量可以用統計 item 屬性個數的方式
上一頁下一頁切換:
注意:item 的索引是 page-1,當到第一頁時不能再點上一頁了,當到最后一頁時不能再點下一頁了