使用 MyBatis-Plus 实现分页功能

MyBatis-Plus 提供了内置的分页插件,可以轻松实现分页查询功能。以下是实现分页的具体方法:

添加依赖

		<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.12</version>
        </dependency>
		
		// mybatis-plus-jsqlparser 是 MyBatis-Plus 提供的用于 SQL 解析的扩展组件,基于 JSqlParser 库实现。该组件主要用于处理动态 SQL 生成、SQL 注入防护以及复杂的 SQL 解析场景。
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-jsqlparser</artifactId>
            <version>3.5.12</version>
        </dependency>

配置分页插件

在 Spring Boot 项目中,需要在配置类中注册分页插件:

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

使用分页查询

在 Service 层或 Controller 层中,可以通过 Page 对象实现分页查询:

// 创建分页对象,参数为当前页码和每页显示数量
Page<User> page = new Page<>(1, 10);

// 调用 MyBatis-Plus 提供的分页查询方法
Page<User> userPage = userMapper.selectPage(page, null);

// 获取分页数据
List<User> users = userPage.getRecords();
long total = userPage.getTotal();

自定义分页查询

如果需要自定义分页查询 SQL,可以使用 MyBatis-Plus 的 IPage 接口:

@Select("SELECT * FROM user WHERE age > #{age}")
IPage<User> selectByAge(IPage<User> page, @Param("age") Integer age);

调用方法:

Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectByAge(page, 18);

前端分页参数传递

前端通常需要传递当前页码和每页大小,后端可以通过参数接收:

@GetMapping("/users")
public PageResult<User> getUsers(@RequestParam(defaultValue = "1") Integer current,
                                @RequestParam(defaultValue = "10") Integer size) {
    Page<User> page = new Page<>(current, size);
    Page<User> result = userService.page(page);
    return new PageResult<>(result.getRecords(), result.getTotal());
}

注意事项

  • 分页插件会自动拦截带有 IPage 参数的方法,并生成分页 SQL。
  • 数据库类型需正确配置,如 DbType.MYSQLDbType.ORACLE
  • 如果使用 XML 文件编写 SQL,需确保 SQL 语句可以被分页插件优化。
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐