MyBatis 分页插件使用教程
MyBatis 是一款优秀的持久层框架,但原生的 MyBatis 并不支持分页查询。为了简化分页操作,MyBatis 官方和第三方提供了多种分页插件,最常用的就是 MyBatis-Plus 的分页插件。本文详细介绍 MyBatis-Plus 分页插件的使用方法。
1. 什么是分页插件
分页插件的作用是拦截查询 SQL,在执行查询之前或之后自动拼接分页相关的 SQL,帮助开发者简化分页处理逻辑,无需手动拼接 LIMIT 和 OFFSET。
2. 环境准备
引入 MyBatis-Plus 依赖
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
配置分页插件
创建配置类:
java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
3. 分页查询使用示例
实体类示例
java
@Data
public class User {
private Long id;
private String name;
private Integer age;
}
Mapper 接口
java
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
分页查询示例
java
@Autowired
private UserMapper userMapper;
@Test
public void testPage() {
Page<User> page = new Page<>(1, 5); // 第1页,每页5条
Page<User> userPage = userMapper.selectPage(page, null);
System.out.println("总记录数: " + userPage.getTotal());
System.out.println("总页数: " + userPage.getPages());
userPage.getRecords().forEach(System.out::println);
}
4. 带条件的分页查询
java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 20);
Page<User> page = new Page<>(1, 3);
Page<User> userPage = userMapper.selectPage(page, queryWrapper);
5. 注意事项
- 分页插件需要配置 MybatisPlusInterceptor
- Page 对象的两个重要参数:
- 当前页数 current
- 每页显示条数 size
- 分页结果包含:
- 总记录数 total
- 总页数 pages
- 当前页数据 records
6. 小结
MyBatis-Plus 分页插件极大简化了分页查询的实现,开发者无需关心底层的 SQL 拼接,只需传入分页参数即可快速完成分页查询。它是企业开发中非常实用的功能,推荐在 MyBatis 项目中广泛使用。