MyBatis-Plus分页

2026-02-04 09:10:27

Table of Contents

  1. 一、配置分页插件
  2. 二、实现分页查询
  3. 三、高级用法
  4. 四、返回结果说明
  5. 五、注意事项

一、配置分页插件

  1. 添加依赖
    确保项目中已引入 MyBatis-Plus 依赖(Maven 示例):

    <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>最新版本</version>
      </dependency>
  2. 配置分页插件
    在 Spring Boot 配置类中注册分页插件:

    @Configuration
      public class MybatisPlusConfig {
          @Bean
          public MybatisPlusInterceptor mybatisPlusInterceptor() {
              MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
              // 添加分页插件(自动识别数据库类型)
              interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
              return interceptor;
          }
      }

    *注意*:不同版本可能使用 =PaginationInterceptor=(旧版)或 =PaginationInnerInterceptor=(新版)。


二、实现分页查询

  1. 创建分页对象
    使用 Page 类定义当前页码和每页大小:

    Page<User> page = new Page<>(1, 10); // 第1页,每页10条
  2. 调用分页方法
    在 Mapper 接口中直接使用 selectPage 方法:

    @Mapper
      public interface UserMapper extends BaseMapper<User> {
          IPage<User> selectPage(Page<User> page, @Param("name") String name);
      }

    对应 XML 映射文件:

    <select id="selectPage" resultType="User">
          SELECT * FROM user WHERE name = #{name}
      </select>
  3. 调用示例
    在 Service 或 Controller 中调用:

    @Service
      public class UserService {
          @Autowired
          private UserMapper userMapper;
    
          public IPage<User> getUsers(String name) {
              Page<User> page = new Page<>(1, 10);
              return userMapper.selectPage(page, name);
          }
      }

    *关键点*:分页参数 Page 必须作为方法第一个参数传入,插件会自动拦截 SQL 并添加分页逻辑(如 =LIMIT=)。


三、高级用法

  1. 自定义复杂分页
    若需自定义 SQL 分页,只需在 Mapper 方法中接收 Page 对象:

    IPage<User> selectCustomPage(Page<User> page, Integer age);
    
      <select id="selectCustomPage" resultType="User">
          SELECT * FROM user WHERE age > #{age}
      </select>
  2. 优化分页性能


四、返回结果说明

IPage 对象包含分页信息:

IPage<User> page = ...;
  List<User> records = page.getRecords(); // 当前页数据
  long total = page.getTotal();          // 总记录数
  int pages = page.getPages();           // 总页数
  int current = page.getCurrent();       // 当前页码

五、注意事项

  1. *依赖版本兼容性*:确保 MyBatis-Plus 版本与 Spring Boot 兼容。
  2. *分页参数位置*:=Page= 对象必须作为 Mapper 方法的第一个参数。
  3. *多数据源场景*:需为每个数据源单独配置分页插件。

通过以上步骤,即可快速实现高效的分页功能。完整示例可参考官方网页或搜索结果中的代码片段。