明确一点,是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);