Mybatis-Plus分页插件与内置方法详解

需积分: 29 0 下载量 176 浏览量 更新于2024-08-04 收藏 11KB MD 举报
"Mybatis-Plus 是一个基于 MyBatis 的优秀ORM框架,它简化了数据库操作,并提供了一套方便易用的API来处理常见的业务场景,包括分页查询。本文将重点介绍如何在Mybatis-Plus中实现分页查询,以及如何使用内置的分页方法和PaginationInnerInterceptor插件。 首先,官方文档推荐使用Mybatis-Plus的内置分页插件PageHelper,它是官方支持的分页解决方案,地址为[官方文档](https://baomidou.com/pages/97710a/PageHelper),这里提供了详细的文档和第一手资料,对于理解插件的工作原理和使用非常关键。 在BaseMapper接口中,Mybatis-Plus预定义了两个支持分页的方法:`selectPage`和`selectMapsPage`。这两个方法接受Page对象作为参数,以及一个Wrapper(动态SQL构建器)用于构造查询条件。例如,在单元测试中,可以这样编写代码来查询年龄为13岁的用户: ```java @Test public void testPage() { // 创建分页参数,第一页,每页10条数据 Page<User> page = Page.of(1, 10); // 使用LambdaQueryWrapper创建查询条件 LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getAge, 13); // 调用selectPage方法进行分页查询 userMapper.selectPage(page, queryWrapper); // 打印查询结果 page.getRecords().forEach(System.out::println); } ``` 然而,运行这段代码会发现,虽然传递了分页参数,但`selectPage`方法实际上返回的是所有符合条件的记录,而不是分页结果。这是因为默认情况下,Mybatis-Plus的`selectPage`方法并未启用分页插件。要实现分页查询,需要在Mybatis-Plus的全局配置中启用PaginationInnerInterceptor插件。 PaginationInnerInterceptor是一个内置的拦截器,负责在执行SQL时自动添加分页查询语句。启用这个插件后,`selectPage`方法将会正确地执行分页查询。通常在全局配置文件(如application.yml或application.properties)中设置,示例如下: ```yaml mybatis-plus: global-config: db-config: pagination: enabled: true ``` 确保插件配置后,再次调用`selectPage`方法,它将返回预期的分页结果,包括总记录数、当前页数据等。 总结来说,使用Mybatis-Plus进行分页查询涉及两个主要步骤:一是利用内置的`selectPage`方法配合LambdaQueryWrapper构建查询条件;二是确保配置了PaginationInnerInterceptor插件以启用分页功能。通过正确的使用,可以大大简化前端与后端交互时的分页逻辑,提高开发效率。"