分頁外掛pagehelper初使用,前端傳遞當前頁碼與每頁條數後臺接受實現分頁
阿新 • • 發佈:2018-12-07
最新的專案用到了pagehelper分頁外掛,在此做下筆記方便以後檢視!同時也希望能對別人產生幫助。
1.因為專案是maven進行管理的,所以:第一步就是在pom.xml檔案中引入pagehelper分頁外掛。
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency>
2.專案執行成功 ,呼叫資料庫資料前加一句程式碼即可實現分頁 :PageHelper.startPage(pageNum, pageSize)
分頁成功後,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,有兩種方法:
需要強制轉換為Page<E>,或者使用PageInfo類(下面的例子有介紹)
方法一:強轉
serviceImpl層
controller層
Page<E>:需要詳細瞭解可以查下每個屬性的含義。
方法二:使用PageInfo類
public PageInfo<Doc> selectDocByPage1(int currentPage, int pageSize) { PageHelper.startPage(currentPage, pageSize); List<Doc> docs = docMapper.selectByPageAndSelections(); PageInfo<Doc> pageInfo = new PageInfo<>(docs); return pageInfo; }
pageInfo:需要詳細瞭解可以查下每個屬性的含義。
/** * 頁碼,從1開始 */ private int pageNum; /** * 頁面大小 */ private int pageSize; /** * 起始行 */ private int startRow; /** * 末行 */ private int endRow; /** * 總數 */ private long total; /** * 總頁數 */ private int pages; /** * 包含count查詢 */ private boolean count = true; /** * count訊號,3種情況,null的時候執行預設BoundSql,true的時候執行count,false執行分頁 */ private Boolean countSignal; /** * 排序 */ private String orderBy; /** * 只增加排序 */ private boolean orderByOnly; /** * 分頁合理化 */ private Boolean reasonable; /** * 當設定為true的時候,如果pagesize設定為0(或RowBounds的limit=0),就不執行分頁,返回全部結果 */ private Boolean pageSizeZero;
注意:PageHelper只對緊跟著的第一個SQL語句起作用
//獲取第1頁,10條內容,預設查詢總數count
PageHelper.startPage(1, 10);
//緊跟著的第一個select方法會被分頁
List<Country> list = countryMapper.selectIf(1);
//後面的不會被分頁,除非再次呼叫PageHelper.startPage
List<Country> list2 = countryMapper.selectIf(null);
//list1
assertEquals(2, list.get(0).getId());
assertEquals(10, list.size());
//分頁時,實際返回的結果list型別是Page<E>,如果想取出分頁資訊,需要強制轉換為Page<E>,
//或者使用PageInfo類(下面的例子有介紹)
assertEquals(182, ((Page) list).getTotal());
//list2
assertEquals(1, list2.get(0).getId());
assertEquals(182, list2.size());
如果想知道為什麼會這樣可以搜搜pageHelper實現分頁的原理。