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

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

方法定义及其详细介绍

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

    java 复制代码
    default List<T> list(Wrapper<T> queryWrapper) {
        return this.getBaseMapper().selectList(queryWrapper);
    }
    • 功能 :根据传入的 queryWrapper 查询符合条件的所有记录。

    • 参数

      • queryWrapperWrapper<T> 实例,用于定义查询条件。这可以是 QueryWrapper<T>LambdaQueryWrapper<T>,允许你以链式调用的方式构建查询条件。
    • 返回值:符合查询条件的记录列表。

    • 使用方法

      java 复制代码
      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)

    java 复制代码
    default List<T> list(IPage<T> page, Wrapper<T> queryWrapper) {
        return this.getBaseMapper().selectList(page, queryWrapper);
    }
    • 功能:分页查询符合条件的记录,返回当前页的数据列表。

    • 参数

      • pageIPage<T> 实例,用于指定分页信息,如当前页码和每页记录数。通常使用 Page<T> 类的实现。
      • queryWrapperWrapper<T> 实例,用于定义查询条件。
    • 返回值:当前页符合条件的记录列表。

    • 使用方法

      java 复制代码
      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()

    java 复制代码
    default List<T> list() {
        return this.list((Wrapper)Wrappers.emptyWrapper());
    }
    • 功能:查询所有记录,不使用任何查询条件。

    • 参数:无。

    • 实现 :调用 list(Wrapper<T> queryWrapper) 方法,并传递一个空的 Wrapper 实例。Wrappers.emptyWrapper() 返回一个空的 Wrapper 实例,表示没有任何查询条件。

    • 返回值:所有记录的列表。

    • 使用方法

      java 复制代码
      List<TOreq> allRecords = service.list();
  4. default List<T> list(IPage<T> page)

    java 复制代码
    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 实例,表示没有任何查询条件。

    • 返回值:当前页的数据列表,包括所有记录。

    • 使用方法

      java 复制代码
      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) 方法允许传递具体的查询条件或分页信息,提供更灵活的查询方式。

使用示例

  • 查询所有记录

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

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

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

    java 复制代码
    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();

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

相关推荐
Q_970956396 分钟前
java+vue+SpringBoo校园失物招领网站(程序+数据库+报告+部署教程+答辩指导)
java·数据库·vue.js
Wyc7240914 分钟前
Maven
java·数据库·maven
程序猿小D17 分钟前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的电影小说网站管理系统,推荐!
java·数据库·mysql·spring·毕业设计·ssm框架·电影小说网站
摸爬滚打李上进40 分钟前
重生学AI第十六集:线性层nn.Linear
人工智能·pytorch·python·神经网络·机器学习
木头没有瓜2 小时前
idea离线安装插件
java·ide·intellij-idea
一勺菠萝丶2 小时前
Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
xml·spring boot·mybatis
llwszx2 小时前
Spring中DelayQueue深度解析:从原理到实战(附结构图解析)
java·后端·spring·delayqueue·延迟任务
凛铄linshuo2 小时前
爬虫简单实操2——以贴吧为例爬取“某吧”前10页的网页代码
爬虫·python·学习
牛客企业服务2 小时前
2025年AI面试推荐榜单,数字化招聘转型优选
人工智能·python·算法·面试·职场和发展·金融·求职招聘
述雾学java2 小时前
Spring Cloud Feign 整合 Sentinel 实现服务降级与熔断保护
java·spring cloud·sentinel