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)机制。

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...