2019年4月23日 星期二

分頁插件-PageHelper (Mybatis3.x 十四)

文檔

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.8</version>
</dependency>


※全域設定

<plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <property name="param1" value="value1" />
    </plugin>
</plugins>


※測試

/*
Page<Object> page = PageHelper.startPage(2, 3); // 每頁三條記錄,顯示第二頁,
List<Emp> emp = mapper.getEmp();
emp.stream().forEach(x -> System.out.println(x.getEname()));
// SELECT * FROM ( SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( select * from emp ) TMP_PAGE) WHERE ROW_ID <= ? AND ROW_ID > ? 
System.out.println("當前頁:" + page.getPageNum()); // 2
System.out.println("每頁顯示幾條記錄:" + page.getPageSize()); // 3
System.out.println("總共幾筆記錄:" + page.getTotal());
System.out.println("總共有幾頁:" + page.getPages());
*/
    
PageHelper.startPage(3, 5);
List<Emp> emp = mapper.getEmp();
PageInfo<Emp> pageInfo = new PageInfo<>(emp);
emp.stream().forEach(x -> System.out.println(x.getEname()));
System.out.println("當前頁:" + pageInfo.getPageNum());
System.out.println("每頁顯示幾條記錄:" + pageInfo.getPageSize());
System.out.println("當前頁有幾條記錄(最後一頁時,可能和 PageSize()不同):" + pageInfo.getSize());
System.out.println("總共幾筆記錄:" + pageInfo.getTotal());
System.out.println("總共有幾頁:" + pageInfo.getPages());
    
System.out.println("當前頁的第一筆是全部記錄的第幾筆記錄:" + pageInfo.getStartRow());
System.out.println("當前頁的最後一筆是全部記錄的第幾筆記錄:" + pageInfo.getEndRow());
System.out.println("上一頁是第幾頁:" + pageInfo.getPrePage()); // 沒有上一頁顯示 0
System.out.println("下一頁是第幾頁:" + pageInfo.getNextPage()); // 沒有下一頁顯示 0
System.out.println("是否是第一頁:" + pageInfo.isIsFirstPage());
System.out.println("是否是最後一頁:" + pageInfo.isIsLastPage());
System.out.println("是否有上一頁:" + pageInfo.isHasPreviousPage());
System.out.println("是否有下一頁:" + pageInfo.isHasNextPage());


※PageHelper.startPage 必須寫在呼叫之前才有用

※PageInfo 如果沒有配合 PageHelper,那就是看 SQL 下什麼,回來就有幾筆

※看原始碼其實就有說明每一個欄位的作用了

沒有留言:

張貼留言