MyBatis 分页插件使用教程

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 项目中广泛使用。

相关推荐
俊昭喜喜里2 小时前
Springboot的Mybatis中的条件构造器
数据库·mybatis
2301_32241428041 天前
基于SSM框架的在线考试管理系统的设计与实现14750-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·redis·mysql·tomcat·maven·mybatis·ssm
毕业设计7033 天前
(免费领源码)SSM董家湾线上点餐系统04682- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·redis·mysql·tomcat·maven·mybatis·ssm
云絮.4 天前
mybatis(二)
java·数据库·mybatis
夕除5 天前
redis--主从还是集群,内存
java·spring·mybatis
驭渊的小故事5 天前
MyBatis-Plus 实战指南:从基础 CRUD 到条件构造器与自定义 SQL(二)
数据库·sql·mybatis
毕业设计7036 天前
(免费领源码)基于node的学生公寓管理系统06412- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·mysql·node.js·maven·mybatis·express·b/s
驭渊的小故事6 天前
MyBatis XML 开发实战:从配置到 CRUD 全解析
xml·java·mybatis
云絮.7 天前
Mybatis(一)
java·数据库·mybatis
她的男孩9 天前
权限通了、列表有数,一点分页就炸Forge Admin 用 COUNT(1) 扛住复杂待办
java·spring boot·mybatis