MyBatis複習(八):MyBatis 分頁插件 PageHelper

PageHelper是國人開源的一款MyBatis擴展插件,可以幫助完成自動分頁功能。PageHelper自動分頁插件使用非常簡單,如果持久層框架用的是MyBatis,建議使用該分頁插件。

引入分頁插件

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.11</version>
</dependency>
<dependency>
    <groupId>com.github.jsqlparser</groupId>
    <artifactId>jsqlparser</artifactId>
</dependency>

分頁插件參數介紹

下面幾個參數都是針對默認 dialect 情況下的參數。使用自定義 dialect 實現時,下面的參數沒有任何作用。

  1. helperDialect:分頁插件會自動檢測當前數據庫url鏈接,判斷數據庫類型自動選擇合適的分頁方式。也可以配置helperDialect屬性來指定分頁插件使用哪種數據庫方言(mysql、oracle、sqlite、db2、sqlserver等)。

  2. reasoonable:分頁合理化參數,默認值爲false。當該參數設置爲 true 時,pageNum<=0 時會查詢第一頁, pageNum>pages(超過總數時),會查詢最後一頁。默認false 時,直接根據參數進行查詢,即pageNum=-1時,就會查詢-1頁,這樣就會導致出錯。(強烈建議設置該屬性爲true)

  3. 更多參數請參照官網


在mybatis-config.xml中配置攔截器插件

<plugins>
	<plugin interceptor="com.github.pagehelper.PageInterceptor">
		<!--設置數據庫類型-->
		<property name="pageDialect" value="mysql"/>
		<!--設置分頁合理化-->
		<property name="reasonable" value="true"/>
	</plugin>
</plugins>

在代碼中使用

<select id="selectPage" resultType="User">
	select * from t_user where age &lt; 45
</select>
@Test
public void testPageHelper(){
	SqlSession sqlSession = null;
	try{
		sqlSession = MyBatisUtils.openSession();
		/* 開啓自動分頁,startPage()方法會自動將下一次查詢進行分頁 */
		PageHelper.startPage(pageNum, pageSize); //pageNum是頁碼,pageSize是頁寬
		//獲取分頁對象
		List<User> userList = (Page) sqlSession.selectList("selectPage");
		//得到分頁結果對象,分頁信息都保存在pageInfo中
		PageInfo<User> page = new PageInfo<>(userList);
		System.out.println("總頁數:" + page.getPages());
		System.out.println("總記錄數:" + page.getTotal());
		System.out.println("開始行號:" + page.getstartRow());
		System.out.println("結束行號:" + page.getEndRow());
		System.out.println("當前頁碼:" + page.getPageNum());
		List<User> data = page.getResult(); //當前頁的數據
		for(User u : data){
			System.out.println(u.getUserName());
		}
	}catch (Exception e){
        throw e;
    }finally {
        MyBatisUtils.closeSession(sqlSession);
    }
}




總結:

想要實現分頁需要做哪些事:

  • 當前頁數據查詢:select * from tab limit 0, 10

  • 總記錄數查詢:select count(*) from tab

  • 通過程序計算總頁數,上一頁頁碼,下一頁頁碼

當在使用了PageHelper分頁插件後,這些事都不需要我們來做了,PageHelper會自動幫我們來完成。並且還擴充了更多的功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章