1)、統計總數,(將sql語句變為 select count(0) from ***,只對簡單sql語句其效果,複雜sql語句需要自己寫)
page<?> page = pagehelper.startpage(1,-1);
long count = page.gettotal();
2)、分頁,pagenum - 第n頁, pagesize - 每頁m條數
a、只分頁不統計(每次只執行分頁語句)
pagehelper.startpage([pagenum],[pagesize]);
list<?> pagelist = queryforlist( ***.class, "queryall" , param);
//pagelist就是分頁之後的結果
b、分頁並統計(每次執行2條語句,一條select count語句,一條分頁語句)適用於查詢分頁時資料發生變動,需要將實時的變動資訊反映到分頁結果上
page<?> page = pagehelper.startpage([pagenum],[pagesize],[iscount]);
list<?> pagelist = queryforlist( ***.class , "queryall" , param);
long count = page.gettotal();
//也可以 list<?> pagelist = page.getlist(); 獲取分頁後的結果集
3)、使用pagehelper查全部(不分頁)
pagehelper.startpage(1,0);
list<?> alllist = queryforlist( ***.class , "queryall" , param);
4)、pagehelper的其他api
string orderby = pagehelper.getorderby(); //獲取orderby語句
page<?> page = pagehelper.startpage(object params);
page<?> page = pagehelper.startpage(int pagenum, int pagesize);
page<?> page = pagehelper.startpage(int pagenum, int pagesize, boolean iscount);
page<?> page = pagehelper.startpage(pagenum, pagesize, orderby);
page<?> page = pagehelper.startpage(pagenum, pagesize, iscount, isreasonable); //isreasonable分頁合理化,null時用預設配置
page<?> page = pagehelper.startpage(pagenum, pagesize, iscount, isreasonable, ispagesizezero); //ispagesizezero是否支援pagesize為0,true且pagesize=0時返回全部結果,false時分頁,null時用預設配置
pagehelper 方法使用了靜態的 threadlocal 引數,分頁引數和執行緒是繫結的。
只要你可以保證在 pagehelper 方法呼叫後緊跟 mybatis 查詢方法,這就是安全的。因為 pagehelper 在 finally **段中自動清除了 threadlocal 儲存的物件。
但是如果你寫出下面這樣的**,就是不安全的用法:
pagehelper.startpage(1, 10);
listlist;
if(param1 != null) else
這種情況下由於 param1 存在 null 的情況,就會導致 pagehelper 生產了乙個分頁引數,但是沒有被消費,這個引數就會一直保留在這個執行緒上。當這個執行緒再次被使用時,就可能導致不該分頁的方法去消費這個分頁引數,這就產生了莫名其妙的分頁。
上面這個**,應該寫成下面這個樣子:
listlist;
if(param1 != null) else
這種寫法就能保證安全。
如果你對此不放心,你可以手動清理 threadlocal 儲存的分頁引數,可以像下面這樣使用:
listlist;
if(param1 != null) finally
} else
這麼寫很不好看,而且沒有必要。
參考**;
mybatis分頁外掛程式pagehelper簡單使用
pagehelper介紹
pagehelper自動增加limit分頁問題
PageHelper的自動新增分頁的問題
如果vo裡有pagenum和pagesize 再加上配置檔案裡supportmethodsarguments true,那麼即使不使用pagehelper.startpage pagenum,pagesize 也會自動分頁。問題就在supportmethodsarguments這個引數,預設是fal...
PageHelper自動增加limit分頁
問題 使用pagehelperi分頁,報錯如下 caused by com.alibaba.druid.sql.parser.parserexception syntax error,error in limi1 1 limit expect limit,actual limit limit 原始查...
使用PageHelper分頁的問題
今天遇到這樣個問題,利用pagehelper做分頁,結果查出來的pagesize和total一樣,這樣前端總會查到一頁,這與結果不符。原始碼如下 pagehelper.startpage pagenum,pagesize,true list studentscoreentities students...