MyBatis-Plus 分页查询基本用法
创始人
2024-11-13 00:40:24
0

目录

      • MyBatis-Plus 分页查询概述
      • 核心概念
      • 分页查询的实现步骤
      • 注意事项

MyBatis-Plus 分页查询概述

MyBatis-Plus 的分页功能是通过拦截 MyBatis 的查询操作,动态地修改 SQL 语句来实现的。它支持多种数据库的分页查询,包括 MySQL、PostgreSQL、SQL Server 和 Oracle 等。

核心概念

  1. Page:分页参数和分页结果的载体。它包括当前页码、每页记录数、总记录数、总页数和当前页的数据列表等属性。

  2. IPage:分页查询结果的接口,继承自 java.util.List 接口。

  3. PageInfo:封装了 Page 对象的额外信息,如每个页面的导航信息等。

  4. QueryWrapper:用于构建查询条件的包装器,支持链式调用和 lambda 表达式。

  5. OrderItem:用于定义排序规则的类。

分页查询的实现步骤

  1. 定义 Mapper 接口

    Mapper 接口应该继承 BaseMapperIService,其中 T 是你的实体类。

    @Mapper public interface UserMapper extends BaseMapper {     // 可以添加自定义方法 } 
  2. 配置 MyBatis-Plus

    在配置类或配置文件中配置 MyBatis-Plus,包括 Mapper 扫描路径、类型别名包等。

    # application.properties mybatis-plus.mapper-locations=classpath*:/mapper/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity 
  3. 创建 Page 对象

    在需要进行分页查询的地方创建一个 Page 对象,并设置当前页码、每页记录数等参数。

    Page page = new Page<>(1, 10); 
  4. 编写 QueryWrapper

    使用 QueryWrapper 构建查询条件,支持链式调用和 lambda 表达式。

    QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("status", 1); 
  5. 调用分页查询方法

    在 Mapper 接口中调用分页查询方法,如 selectPage。将 Page 对象和 QueryWrapper 作为参数传入。

    IPage userPage = userMapper.selectPage(page, queryWrapper); 
  6. 处理分页结果

    从返回的 IPage 对象中获取总记录数、总页数和当前页的数据列表等信息。

    long totalRecords = userPage.getTotal(); long totalPage = userPage.getPages(); List users = userPage.getRecords(); 
  7. 排序

    在创建 Page 对象时,可以设置排序规则。MyBatis-Plus 会自动将排序规则应用到查询中。

    List orders = new ArrayList<>(); orders.add(new OrderItem("age", SortOrder.ASC)); orders.add(new OrderItem("create_time", SortOrder.DESC)); Page page = new Page<>(1, 10, orders); 
  8. 自定义分页逻辑

    如果需要自定义分页逻辑,可以重写 BaseMapper 中的 selectPage 方法。这样,你就可以根据实际需求调整分页查询的 SQL 语句。

  9. 使用 PageInfo

    PageInfo 封装了 Page 对象的额外信息,如每个页面的导航信息。在 Service 层或 Controller 层返回 PageInfo 对象,可以方便地展示分页导航。

    PageInfo pageInfo = new PageInfo<>(userPage.getRecords()); return pageInfo; 

注意事项

  1. 性能优化:确保在 WHERE 子句中使用的字段上有索引,以提高查询性能。

  2. 数据库兼容性:MyBatis-Plus 支持多种数据库的分页查询,但不同数据库的分页语句可能有所不同。确保你了解所使用的数据库的分页机制。

  3. 参数验证:在实际应用中,应该对传入的分页参数进行验证,避免出现负数或不合理的参数。

  4. 分页参数动态设置:分页参数(如当前页码和每页记录数)应该根据前端请求进行动态设置,而不是硬编码在代码中。

  5. 自定义拦截器:如果需要对分页查询进行更细粒度的控制,可以考虑使用 MyBatis 的拦截器(Interceptor)机制。

相关内容

热门资讯

总算了解!!约局吧作必弊脚本,... 总算了解!!约局吧作必弊脚本,微乐游戏竞技团辅助(透视)确实真的有工具(哔哩哔哩)1、点击下载安装,...
不少玩家反映!智星菠萝辅助,微... 不少玩家反映!智星菠萝辅助,微乐老友广东辅助器(透视)好像是有方法(哔哩哔哩)1)微乐老友广东辅助器...
重大消息!约局吧如何查看是否有... 重大消息!约局吧如何查看是否有挂,微信微乐辅助器使用教程(透视)竟然有有插件(哔哩哔哩)1、点击下载...
推荐攻略!拱趴大菠萝怎么开挂,... 推荐攻略!拱趴大菠萝怎么开挂,微信微乐挂有没有(透视)本来是真的有app(哔哩哔哩)微信微乐挂有没有...
玩家必看科普!xpoker透视... 玩家必看科普!xpoker透视辅助,微乐自建房辅助软件如何下载(透视)切实是真的有技巧(哔哩哔哩)1...
玩家亲测!哈糖大菠萝怎么开挂,... 玩家亲测!哈糖大菠萝怎么开挂,微乐自建房插件详细教程(透视)好像真的有器(哔哩哔哩)1、操作简单,无...
盘点几款!哈糖大菠萝有挂吗5个... 盘点几款!哈糖大菠萝有挂吗5个常用方法,微乐陕西小程序破解器(透视)都是存在有软件(哔哩哔哩)1、金...
有玩家发现!竞技联盟破解版最新... 有玩家发现!竞技联盟破解版最新版,微乐家乡官方app下载(透视)总是存在有技巧(哔哩哔哩)1、实时微...
玩家必看教程!!we poke... 玩家必看教程!!we poker免费辅助器,微乐自建房黑科技辅助工具下载(透视)总是是有软件(哔哩哔...
专业讨论!!哈糖大菠萝有挂吗5... 专业讨论!!哈糖大菠萝有挂吗5个常用方法,微乐小程序免费黑科技下载方法(透视)一直真的是有脚本(哔哩...