当前位置: 首页 > 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();
    

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

http://www.lryc.cn/news/428008.html

相关文章:

  • MySQL库表的基本操作
  • 基于ResNeSt50神经网络模型的蘑菇分类设计与实现,使用注意力机制,分别对应8种蘑菇进行训练预测
  • [论文翻译]使用 BERT 检测安卓恶意软件
  • LabVIEW滚动轴承故障诊断系统
  • 【论文分享】通过社交媒体图片和计算机视觉分析城市绿道的使用情况
  • MySQL 在 Windows 和 Ubuntu 上的安装与远程连接配置简介
  • 博达网站群管理平台 v6.0使用相关问题解决
  • C++—>STL中vector使用篇
  • pyinstaller打包vnpy项目
  • kafka 消费组 分区分配策略
  • AQS原理解析
  • 『 Linux 』利用UDP套接字实现简单群聊
  • 【数据结构与算法 | 图篇】最小生成树之Kruskal(克鲁斯卡尔)算法
  • 了解常用的代码检查工具
  • BUUCTF PWN wp--warmup_csaw_2016
  • dockerfile搭建部署LNMP
  • Rust : 数据分析利器polars用法
  • Qt第一课
  • 论“graphics.h”库,easyx
  • 如何在寂静中用电脑找回失踪的手机?远程控制了解一下
  • Android 实现动态换行显示的 TextView 列表
  • Golang | Leetcode Golang题解之第352题将数据流变为多个不相交区间
  • Ubuntu安装mysql 以及远程连接mysql Windows—适合初学者的讲解(详细)
  • 【数学建模】MATLAB快速入门
  • 【ubuntu24.04】k8s 部署5:配置calico 镜像拉取
  • Elasticsearch 的数据备份与恢复
  • Ps:首选项 - 暂存盘
  • 力扣217题详解:存在重复元素的多种解法与复杂度分析
  • 享元模式:轻量级对象共享,高效利用内存
  • 人工智能-自然语言处理(NLP)