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

Java基础——IService.class 中查询数据方法list() 源码剖析及使用

下面详细介绍Mybatis-plus 的默认服务IService.class 中的查询数据的方法及使用。

方法定义及其详细介绍

  1. default List<T> list(Wrapper<T> queryWrapper)

    default List<T> list(Wrapper<T> queryWrapper) {return this.getBaseMapper().selectList(queryWrapper);
    }
    
    • 功能:根据传入的 queryWrapper 查询符合条件的所有记录。
    • 参数
      • queryWrapperWrapper<T> 实例,用于定义查询条件。这可以是 QueryWrapper<T>LambdaQueryWrapper<T>,允许你以链式调用的方式构建查询条件。
    • 返回值:符合查询条件的记录列表。
    • 使用方法
      QueryWrapper<TOreq> queryWrapper = new QueryWrapper<>();
      queryWrapper.eq("status", "active");
      List<TOreq> activeRecords = service.list(queryWrapper);
      
  2. default List<T> list(IPage<T> page, Wrapper<T> queryWrapper)

    default List<T> list(IPage<T> page, Wrapper<T> queryWrapper) {return this.getBaseMapper().selectList(page, queryWrapper);
    }
    
    • 功能:分页查询符合条件的记录,返回当前页的数据列表。
    • 参数
      • pageIPage<T> 实例,用于指定分页信息,如当前页码和每页记录数。通常使用 Page<T> 类的实现。
      • queryWrapperWrapper<T> 实例,用于定义查询条件。
    • 返回值:当前页符合条件的记录列表。
    • 使用方法
      IPage<TOreq> page = new Page<>(1, 10); // 第1页,每页10条记录
      QueryWrapper<TOreq> queryWrapper = new QueryWrapper<>();
      queryWrapper.eq("status", "active");
      IPage<TOreq> resultPage = service.list(page, queryWrapper);
      List<TOreq> activeRecords = resultPage.getRecords();
      
  3. default List<T> list()

    default List<T> list() {return this.list((Wrapper)Wrappers.emptyWrapper());
    }
    
    • 功能:查询所有记录,不使用任何查询条件。
    • 参数:无。
    • 实现:调用 list(Wrapper<T> queryWrapper) 方法,并传递一个空的 Wrapper 实例。Wrappers.emptyWrapper() 返回一个空的 Wrapper 实例,表示没有任何查询条件。
    • 返回值:所有记录的列表。
    • 使用方法
      List<TOreq> allRecords = service.list();
      
  4. default List<T> list(IPage<T> page)

    default List<T> list(IPage<T> page) {return this.list(page, Wrappers.emptyWrapper());
    }
    
    • 功能:分页查询所有记录,不使用任何查询条件。
    • 参数
      • pageIPage<T> 实例,用于指定分页信息。
    • 实现:调用 list(IPage<T> page, Wrapper<T> queryWrapper) 方法,并传递一个空的 Wrapper 实例。Wrappers.emptyWrapper() 返回一个空的 Wrapper 实例,表示没有任何查询条件。
    • 返回值:当前页的数据列表,包括所有记录。
    • 使用方法
      IPage<TOreq> page = new Page<>(1, 10); // 第1页,每页10条记录
      List<TOreq> allRecords = service.list(page);
      

区别及使用方法总结

  1. 查询条件

    • list(Wrapper<T> queryWrapper)list(IPage<T> page, Wrapper<T> queryWrapper):允许使用自定义的查询条件。
    • list()list(IPage<T> page):不使用查询条件,分别是查询所有记录和分页查询所有记录。
  2. 分页

    • list(IPage<T> page, Wrapper<T> queryWrapper)list(IPage<T> page):支持分页查询,需要提供 IPage<T> 实例。
    • list(Wrapper<T> queryWrapper)list():不支持分页查询,返回所有符合条件的记录。
  3. 默认实现

    • list()list(IPage<T> page) 方法使用 Wrappers.emptyWrapper() 作为查询条件,默认情况下查询所有记录或进行分页查询所有记录。
    • list(Wrapper<T> queryWrapper)list(IPage<T> page, Wrapper<T> queryWrapper) 方法允许传递具体的查询条件或分页信息,提供更灵活的查询方式。

使用示例

  • 查询所有记录

    List<TOreq> allRecords = service.list();
    
  • 分页查询所有记录

    IPage<TOreq> page = new Page<>(1, 10); // 第1页,每页10条记录
    List<TOreq> pagedRecords = service.list(page);
    
  • 使用条件查询所有记录

    QueryWrapper<TOreq> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("status", "active");
    List<TOreq> activeRecords = service.list(queryWrapper);
    
  • 分页条件查询

    IPage<TOreq> page = new Page<>(1, 10); // 第1页,每页10条记录
    QueryWrapper<TOreq> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("status", "active");
    IPage<TOreq> resultPage = service.list(page, queryWrapper);
    List<TOreq> activeRecords = resultPage.getRecords();
    

这些方法提供了不同的查询方式,允许你灵活地获取所需的数据。根据实际需求选择合适的方法进行数据查询。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 《区块链与监管合规:在创新与规范之间寻求平衡》
  • 基于ssm+vue+uniapp的二手物品交易平台小程序
  • Linux安装MQTT 服务器(图文教程)
  • Swift 基本语法
  • 【算法】dfs转dp的通用方式
  • Python 办公自动化 处理 Excel 数据 【1】推荐
  • 设计模式实战:即时通讯应用的设计与实现
  • 主成分分析SPSS步骤+Matlab程序
  • OLAP引擎之Druid
  • 洛谷 CF295D Greg and Caves
  • Java数组的应用场景
  • 音频剪辑软件哪个好用?五大音频剪辑软件分享
  • Chrome快捷键提高效率
  • Vue 3 + Pinia 实现网页刷新功能
  • 在js中判断对象是空对象的几种方法
  • ES6指北【2】—— 箭头函数
  • 0基础学习移动端适配
  • Angular 4.x 动态创建组件
  • bearychat的java client
  • CEF与代理
  • Fabric架构演变之路
  • Java,console输出实时的转向GUI textbox
  • JavaScript设计模式与开发实践系列之策略模式
  • JavaScript学习总结——原型
  • Redash本地开发环境搭建
  • Redis在Web项目中的应用与实践
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 仿天猫超市收藏抛物线动画工具库
  • 猴子数据域名防封接口降低小说被封的风险
  • 后端_ThinkPHP5
  • 检测对象或数组
  • 人脸识别最新开发经验demo
  • 手写双向链表LinkedList的几个常用功能
  • 微服务框架lagom
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我建了一个叫Hello World的项目
  • Java总结 - String - 这篇请使劲喷我
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • # Kafka_深入探秘者(2):kafka 生产者
  • # Redis 入门到精通(九)-- 主从复制(1)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 达梦数据库知识点
  • (12)Linux 常见的三种进程状态
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C语言)二分查找 超详细
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (排序详解之 堆排序)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (三)SvelteKit教程:layout 文件
  • (转) ns2/nam与nam实现相关的文件