官網:https://pagehelper.github.io/前端
PageHelper是一個Mybatis的分頁插件, 負責將已經寫好的sql語句, 進行分頁加工。官網說法:若是你也在用 MyBatis,建議嘗試該分頁插件,這必定是最方便使用的分頁插件。分頁插件支持任何複雜的單表、多表分頁。java
優勢:無需你本身去封裝以及關心sql分頁等問題,使用很方便,前端取數據也很方便。mysql
<!--MyBatis的PageHelper插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.3</version> </dependency>
若是是單獨的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
若是是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>
package com.yiidian.dao; import com.yiidian.domain.Customer; import java.util.List; /** * Dao接口 *一點教程網 - www.yiidian.com */ public interface CustomerDao { /** * 查詢全部用戶 */ public List<Customer> findAll(); }
這裏只須要定義普通查詢的方法便可,無需爲分頁另外定義特殊的方法。數據庫
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(); } }
PageHelper把全部分頁結果數據封裝到PageInfo對象,下面是打印出經常使用的屬性apache
源碼下載:https://pan.baidu.com/s/1_B6DfcpXPiRxBiVuxxlRPQsession
歡迎關注個人公衆號::一點教程。得到獨家整理的學習資源和平常乾貨推送。 若是您對個人系列教程感興趣,也能夠關注個人網站:yiidian.com