MyBatis 分页插件使用教程
MyBatis 是一款优秀的持久层框架,但原生的 MyBatis 并不支持分页查询。为了简化分页操作,MyBatis 官方和第三方提供了多种分页插件,最常用的就是 MyBatis-Plus 的分页插件。本文详细介绍 MyBatis-Plus 分页插件的使用方法。
1. 什么是分页插件
分页插件的作用是拦截查询 SQL,在执行查询之前或之后自动拼接分页相关的 SQL,帮助开发者简化分页处理逻辑,无需手动拼接 LIMIT 和 OFFSET。
2. 环境准备
引入 MyBatis-Plus 依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>
配置分页插件
创建配置类:
@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}
3. 分页查询使用示例
实体类示例
@Data
public class User {private Long id;private String name;private Integer age;
}
Mapper 接口
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
分页查询示例
@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. 带条件的分页查询
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 项目中广泛使用。