Ipage分頁和PageHelper分頁

2021-10-20 19:14:23 字數 1254 閱讀 8020

兩個都用於分頁,常用的應該是pagehelper了,

使用方法是 pagehelper.startpage()然後後邊寫sql就可以。 緊接著的乙個sql起作用。

ipage則需要在dao層傳入ipage的實現類page物件,該物件實現了ipage。

區別:pagehelper內部原理是將傳入的頁碼和條數賦值給了page物件,儲存到了乙個本地執行緒threadloacl中,然後會進入mybatis的***中。

然後再***中獲取本地執行緒中儲存的分頁的引數。最後再將這寫分頁引數和原本的sql以及內部定義好的sql進行拼接完成sql的分頁處理。

中間會進行判斷該sql 的型別是查詢還是修改操作。如果是查詢才會進入分頁的邏輯並判斷封裝好的page物件是否是null,null則不分頁,否則分頁。

ipage內部原理也是基於***,但是這個攔截的是方法以及方法中的引數,這個也會判斷是否是查詢操作。如果是查詢操作,才會進入分頁的處理邏輯。

進入分頁邏輯處理後,***會通過反射獲取該方法的引數進行判斷是否存在ipage物件的實現類。如果不存在則不進行分頁,存在則將該引數賦值給ipage物件。

然後進行拼接sql的處理完成分頁操作。

但是使用ipage需要注入乙個bean***交給spring進行管理。如下。否則不會進行攔截。

@bean

public paginationinterceptor paginationinterceptor()

pom: springboot使用的是2.1.0

com.baomidou

mybatis-plus-boot-starter

$ com.baomidou

mybatis-plus-generator

ipage的好處:

適用於多方言的資料庫型別;例如 mysql、oracle、sqlserver等。

注意:如果兩個一起用對同乙個sql進行分頁,內部會先執行ipage的***並進行分頁 然後會進入的pagehelper的分頁處理。

優先使用的是ipage並且pagehelper會出現問題(不論誰前誰後)。返回page是沒問題的,但是如果返回集合的結果集使用pageinfo進行分頁就會出現問題。pagehelper只會有指定條數的資料。

所以只能使用乙個,如果兩個一起使用,則使用ipage返回page接收。不可以使用pageinfo進行分頁資料。(當然這個的前提也是對同乙個sql進行分頁操作並返回的集合結果集,正常來說也不會這麼幹,就隨便提一嘴)

Ipage 分頁踩坑 避雷

注!沒啥事的時候,總結出了一點點 相關的筆記,有需要的拿去 不需要的,路過就行 標籤集合 private list tagids 當我封裝好物件時 寫完sql時進行分頁查詢時測試時發現分頁的資料不準確,分頁總條數不準確 因為內巢狀陣列原因,mybatis會自動進行聚合,和在資料庫顯示的條數不一致,在...

Mybatis中的分頁外掛程式 pageHelper

如果直接是從資料庫中進行分頁處理,可以使用以下兩行 實現 pagehelper startpage currentpage,pagesize page page page getroleaccountinfobycondition roleaccountinfodto page.gettotal 獲...

物理分頁和記憶體分頁和邏輯分頁

物理分頁依賴的是某一物理實體,這個物理實體就是資料庫,比如mysql資料庫提供了limit關鍵字,程式設計師只需要編寫帶有limit關鍵字的sql語句,資料庫返回的就是分頁結果。邏輯分頁依賴的是程式設計師編寫的 資料庫返回的不是分頁結果,而是全部資料,然後再由 程式設計師通過 獲取分頁資料,常用的操...