pageHelper(分页插件的使用)
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 }