MyBatis PageHelper分頁插件

1 PageHelper做用

官網:https://pagehelper.github.io/前端

PageHelper是一個Mybatis的分頁插件, 負責將已經寫好的sql語句, 進行分頁加工。官網說法:若是你也在用 MyBatis,建議嘗試該分頁插件,這必定是最方便使用的分頁插件。分頁插件支持任何複雜的單表、多表分頁。java

優勢:無需你本身去封裝以及關心sql分頁等問題,使用很方便,前端取數據也很方便。mysql

2 導入PageHelper插入依賴

<!--MyBatis的PageHelper插件-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.3</version>
</dependency>

3 添加分頁插件配置

3.1 SqlMapConfig.xml配置

若是是單獨的MyBatis框架,須要在SqlMapConfig.xml添加分頁插件的配置git

<!--
    plugins在配置文件中的位置必須符合要求,不然會報錯,順序以下:
    properties?, settings?,
    typeAliases?, typeHandlers?,
    objectFactory?,objectWrapperFactory?,
    plugins?,
    environments?, databaseIdProvider?, mappers?
-->
<plugins>
    <!-- com.github.pagehelper爲PageHelper類所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!--數據庫方言-->
        <property name="helperDialect" value="mysql"/>
        <!--合理化分頁-->
        <property name="reasonable" value="true"/>
    </plugin>
</plugins>

必須注意配置的順序,順序出錯,會執行報錯!github

這裏PageHelper有一些參數能夠設置,具體能夠查看官網文檔。spring

3.2 applicationContext.xml

若是是MyBatis與Spring整合,須要修改Spring的applicationContext.xmlsql

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  <!-- 注意:這裏還有其餘Spring相關配置 -->
  <property name="plugins">
    <array>
      <bean class="com.github.pagehelper.PageInterceptor">
        <property name="properties">
          <value>
            helperDialect=mysql
            reasonable=true
          </value>
        </property>
      </bean>
    </array>
  </property>
</bean>

4 編寫Dao方法

package com.yiidian.dao;
import com.yiidian.domain.Customer;
import java.util.List;

/**
 * Dao接口
 *一點教程網 - www.yiidian.com
 */
public interface CustomerDao {
    /**
     * 查詢全部用戶
     */
    public List<Customer> findAll();
}

這裏只須要定義普通查詢的方法便可,無需爲分頁另外定義特殊的方法。數據庫

5 編寫測試類

package com.yiidian.mybatis;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yiidian.dao.CustomerDao;
import com.yiidian.domain.Customer;
import com.yiidian.utils.MyBatisUtils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * MyBatis測試類 - PageHelper分頁插件的使用
 * 一點教程網 - www.yiidian.com
 */
public class TestCustomerDao {
    @Test
    public void test1(){
        //1.獲取SqlSession對象
        SqlSession sqlSession = MyBatisUtils.getSession();

        //2.生成Dao代理對象
        CustomerDao customerDao = sqlSession.getMapper(CustomerDao.class);

        //3.設置分頁參數
        int pageNun = 1; // 頁碼
        int pageSize = 2;// 每頁顯示條數
        PageHelper.startPage(pageNun,pageSize);

        //4. 查詢用戶數據
        List<Customer> list = customerDao.findAll();

        //5.把用戶數據封裝到PageInfo分頁結果對象
        PageInfo<Customer> page = new PageInfo<>(list);

        //6.取出PageInfo的屬性
        //測試PageInfo所有屬性
        //PageInfo包含了很是全面的分頁屬性
        System.out.println("當前頁碼="+page.getPageNum());
        System.out.println("每頁顯示條數="+page.getPageSize());
        System.out.println("當前頁起始行號="+page.getStartRow());
        System.out.println("當前頁結束行號="+page.getEndRow());
        System.out.println("總記錄數="+page.getTotal());
        System.out.println("總頁數="+page.getPages());
        System.out.println("是否爲第1頁="+page.isIsFirstPage());
        System.out.println("是否爲最後1頁="+page.isIsLastPage());
        System.out.println("是否有上一頁="+page.isHasPreviousPage());
        System.out.println("是否有下一頁="+page.isHasNextPage());
        System.out.println("當前頁數據=");
        for(Customer c:page.getList()){
            System.out.println(c);
        }
        //7.關閉鏈接
        sqlSession.close();
    }
}

6 運行測試類,查看結果

PageHelper把全部分頁結果數據封裝到PageInfo對象,下面是打印出經常使用的屬性apache

file

源碼下載:https://pan.baidu.com/s/1_B6DfcpXPiRxBiVuxxlRPQsession

file

歡迎關注個人公衆號::一點教程。得到獨家整理的學習資源和平常乾貨推送。 若是您對個人系列教程感興趣,也能夠關注個人網站:yiidian.com

相關文章
相關標籤/搜索