当前位置: 首页 > news >正文

MyBatis 分页插件使用教程

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 {

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

http://www.dtcms.com/a/115521.html

相关文章:

  • 常用数据时域降噪方法
  • 嵌入式自动化测试
  • P3799 小 Y 拼木棒
  • 内网渗透-Linux提权之suid提权
  • 论文精读:NC CoNb3S6拓扑能斯特效应 附Peer Review
  • L2-050 懂蛇语(测试点1)
  • 微软推出首款量子计算芯片Majorana 1
  • MySQL中的索引
  • YOLOv11实战电力设备缺陷检测
  • VB.NET Asp.Net Core模板WebAPI应用-宝塔面板Linux系统通过Docker部署
  • 常见的 JavaScript 框架和库
  • OpenDriveVLA:通过大型视觉-语言-动作模型实现端到端自动驾驶
  • Qt Quick 与 Qt 版本匹配关系
  • 前后端开发的未来趋势
  • 内容中台:全域信息协同新引擎
  • RCE漏洞的小点总结
  • 高并发内存池:原理、设计与多线程性能优化实践
  • 【Kubernetes】Kubernetes 如何管理存储?PV 和 PVC 是如何工作的?
  • C++——清明
  • QScrollArea 内部滚动条 QSS 样式失效问题及解决方案
  • JavaScript逆向WebSocket协议解析与动态数据抓取
  • 【CMake】《CMake构建实战:项目开发卷》笔记-Chapter11-实践:基于onnxruntime的手写数字识别库
  • LENOVO联想ThinkBook 16 G6 ABP(21KK)恢复预装OEM原厂Win11系统镜像
  • 每日c/c++题 备战蓝桥杯(小球反弹)[镜像思路求解,最小公倍数]
  • 为什么 LoRA 梯度是建立在全量参数 W 的梯度之上
  • 面向对象编程(OOP)概述
  • 低延迟云网络的核心技术
  • OpenCV轮廓检测全面解析:从基础到高级应用
  • docker的run命令 笔记250406
  • 《深度学习入门:基于Python的理论与实现》第二章感知机