需求
对查询的数据进行分页查询。
分析:MyBatis使用第三方的插件来对功能进行扩展,分页助手PageHelper是将分页的复杂操作进行封装,使用简单的方式即可获得分页的相关数据。
实现步骤
1.导入通用PageHelper的坐标
2.在mybatis核心文件中配置PageHelper插件
3.编写测试分页代码
代码详解:
1.导入通用PageHelper的坐标(依赖包)
<!-- 分页助手 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>3.7.5</version> </dependency> <dependency> <groupId>com.github.jsqlparser</groupId> <artifactId>jsqlparser</artifactId> <version>0.9.1</version> </dependency>
2.在mybatis核心文件中配置PageHelper插件
<!--分页助手插件:插入配置的位置也十分重要,位置不对会报错--> <plugins> <plugin interceptor="com.github.pagehelper.PageHelper"> <!--value :指定方言,MYSQL等数据库的分页语法不同,这里是指定采用哪种数据库的分页语法--> <property name="dialect" value="mysql"/> </plugin> </plugins>
3.编写测试分页代码
/** * 测试分页插件的使用 */ @Test public void test7() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = build.openSession(); InterfaceEmp mapper = sqlSession.getMapper(InterfaceEmp.class); /*pageNum表示当前数据是第几页,pageSize表示当前也展示的数据条数*/ PageHelper.startPage(1,2); List<Emp> emps = mapper.selectAll(); for (Emp emp : emps) { System.out.println(emp); } /*如下也分页插件的其他相关函数*/ PageInfo<Emp> pageInfo = new PageInfo<>(emps); System.out.println("总条数:" + pageInfo.getTotal()); System.out.println("总页数:" + pageInfo.getPages()); System.out.println("当前页:" + pageInfo.getPageNum()); System.out.println("每页显示长度:" + pageInfo.getPageSize()); System.out.println("是否第一页:" + pageInfo.isIsFirstPage()); System.out.println("是否最后一页:" + pageInfo.isIsLastPage()); sqlSession.close(); }
知识点详解
该实现中主要是用到PageHelper标签,该标签的作用是在Mybatis中配置第三方插件。