MyBatis中的翻頁

2021-09-20 10:20:34 字數 1083 閱讀 4916

在我們的查詢資料庫的操作中,有兩種分頁方式,一種是邏輯翻頁(假翻頁), 一種是物理翻頁(真分頁)。

邏輯分頁的原理就是把所有資料都查詢出來,在記憶體中篩選資料。物理分頁是真正的分頁,比如mysql使用limit語句,oracle使用rownum語句,sql server使用top語句。

public listselectbloglist(rowbounds rowbounds);
使用:

int start = 10;

int pagesize = 5;

rowbounds rb = new rowbounds(start, pagesize);

for (blog blog : list)

它的底層是對resultset的處理,它會捨棄掉前面offset條資料,然後再取剩下資料的limit條。

throws sqlexception

} 很明顯,如果資料量大的話,這種分頁效率會很低(和查詢到記憶體中再使用sublist(start, end)沒有什麼區別),所以我們一般會使用物理分頁。

物理分頁是真實的分頁,它是通過資料庫支援的語句來實現分頁功能的。

第一種簡單的辦法就是傳入引數(或者包裝成乙個page物件), 在sql語句中分頁。

select * from tb_blog limit #, #

那我們就需要一種通用的方式,不需要去修改配置的任何一條sql語句,只要在我們需要分頁的地方封裝一下分頁物件就可以了。

最常用的做法是使用分頁外掛程式,這個是基於mybatis的***實現的,比如pagehelper。

pagehelper.startpage(pn, 10);

pageinfo page = new pageinfo(list, 10);

return msg.success().add("pageinfo", page);

pagehelper是根據mybatis的***實現的,簡單的說,它會根據pagehelper的引數,改寫我們的sql,比如mysql會生成limit,oracle會生成rownum。

Jsp中翻頁功能實現

jsp中翻頁功能實現 第一步 新建兩個輔助類 page類 public class page 建構函式,預設 public page 構造方法,對所有屬性進行設定 此處省略set及get構造方法 pageutil類 第二步 在action類中建立page物件,並存入到session中 public ...

爬蟲中實現翻頁(佇列實現)

在爬取列表頁時,通常我們需要翻頁,最簡單的翻頁實現是遞迴呼叫,偽 如下 def crawl list url next url crawl url process html data extract next url if next url is not none crawl list next u...

十二 scrapy中實現翻頁請求

scrapy.request能構建乙個requests,同時指定提取資料的callback函式 next page url while 判斷條件,結束遞迴 yield scrapy.request next page url,callback self.parse scrapy.request方法講...