1.分頁概述:
1.1.為什么要分頁?
1.1.1.為了提高查詢效率
1.1.2.為了方便查看數據
1.2.分頁的三個必要條件:
當前頁:由使用者提供
每一頁顯示大小:由使用者提供
總記錄數:從數據庫表統計
2.PageHelper概述
2.1.PageHelper使用步驟:
2.2.1.配置pom.xml,導入依賴包(官方推薦使用最新版本)
2.2.2.在sqlMapConfig.xml配置插件
2.2.3.在目標方法前,調用PageHelper.startPage(當前頁,頁面大小)
PageInfo
PageHelper介紹
PageHelper是國內非常優秀的一款開源的mybatis分頁插件, 它支持主流的常用數據庫, 例如mysql、 oracle、 mariaDB、 DB2、 SQLite、 Hsqldb等。
使用步驟
<!--pageHelper版本--> <page.version>5.1.4</page.version> <!--分頁插件依賴--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${page.version}</version> </dependency>
在sqlMapConfig.xml
<!--配置插件--> <plugins> <!-- com.github.pagehelper為PageHelper類所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 配置相關參數,通常情況使用默認值即可,不需要配置--> <!--配置指定當前使用的數據庫--> <property name="helperDialect"value="mysql"/> </plugin> </plugins>
測試代碼
1 /** 2 * 2.分頁測試 3 */ 4 @Test 5 public void pageQueryTest(){ 6 // 1.獲取SqlSessionFactory 7 SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtil.getSqlSessionFactory(); 8 9 // 2.創建sqlSession對象 10 SqlSession sqlSession = sqlSessionFactory.openSession(); 11 12 // 3.獲取接口的代理對象 13 UserMapper mapper = sqlSession.getMapper(UserMapper.class); 14 15 // 4.執行數據庫操作 16 // 創建pojo包裝類型 17 QueryVo queryVo = new QueryVo(); 18 19 // 創建用戶對象 20 User user = new User(); 21 user.setUsername(""); 22 23 // 包裝用戶 24 queryVo.setUser(user); 25 26 // 設置分頁 27 /** 28 * 設置分頁參數方法:startPage()。 29 * 參數: 30 * 參數一:當前頁 31 * 參數二:每一頁顯示大小 32 * 33 * 細節: 34 * 該方法要在目標操作前設置 35 */ 36 PageHelper.startPage(1, 2);// 查詢第一頁,每一頁顯示2條記錄 37 38 // 目標操作:查詢用戶數據 39 List<User> list = mapper.queryUserByQueryVo(queryVo); 40 41 /** 42 * 封裝分頁結果數據:PageInfo 43 */ 44 PageInfo<User> pageInfo = new PageInfo<User>(list); 45 46 /** 47 * 打印結果 48 */ 49 System.out.println("上一頁:"+pageInfo.getPrePage()); 50 System.out.println("當前頁:"+pageInfo.getPageNum()); 51 System.out.println("下一頁:"+pageInfo.getNextPage()); 52 53 System.out.println("每一頁頁顯示大小:"+pageInfo.getPageSize()); 54 System.out.println("總記錄數:"+pageInfo.getTotal()); 55 System.out.println("頁數:"+pageInfo.getPages()); 56 57 // 獲取頁號:1 2 3 4 5 6 58 int[] nums = pageInfo.getNavigatepageNums(); 59 System.out.print("頁號:"); 60 for(int i=0;i<nums.length;i++){ 61 System.out.print(nums[i]+","); 62 } 63 System.out.println(); 64 65 // 獲取結果集 66 System.out.println("結果集數據:"); 67 List<User> pageList = pageInfo.getList(); 68 for(User u:pageList){ 69 System.out.println(u); 70 } 71 72 // 5.釋放資源 73 sqlSession.close(); 74 } 75 76 }