明确一点,是MP还是仅仅mybatis。

MP

直接添加一个bean进去就可以了,3.4.0以上版本使用MybatisPlusInterceptor,3.4.0以下使用PaginationInterceptor。

@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
    MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
    // 添加分页插件,指定数据库类型为 MySQL
    interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
    return interceptor;
}
  • 使用
@GetMapping("/list")
public Result<IPage<SysTenant>> list(@RequestParam(defaultValue = "1") Long pageNum,
                                         @RequestParam(defaultValue = "10") Long pageSize) {
    Page<SysTenant> page = new Page<>(pageNum, pageSize);
    IPage<SysTenant> tenantPage = sysTenantService.page(page);
    return Result.success(tenantPage);
}

mybatis

必须要引进PageHelper分页插件

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.3.2</version>
</dependency>
  • 配置类
@Configuration
public class MyBatisConfig {
    @Bean
    public PageInterceptor pageInterceptor() {
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        // 数据库
        properties.setProperty("helperDialect", "mysql");
        // 合理化分页(页码<1 查第一页,>总页数 查最后一页)
        properties.setProperty("reasonable", "true");
        pageInterceptor.setProperties(properties);
        return pageInterceptor;
    }
}
  • 使用
// 第一行:开启分页(紧跟在查询前面!)
PageHelper.startPage(1, 10);

// 第二行:正常查询
List<User> list = userMapper.selectList();

// 包装成分页结果
PageInfo<User> pageInfo = new PageInfo<>(list);