Stream-Query Stream-Query
首页
  • 项目初衷与诞生
  • 介绍
  • 快速上手
  • 目录结构
  • core模块

    • Opp
    • Sf
    • Map
    • Steam
    • TreeHelper
    • HighlightHelper
    • ReflectHelper
    • BeanHelper
  • plugin模块

    • Database
    • One
    • Many
    • OneToOne
    • OneToMany
  • 安装

    • 通过Maven安装
    • 通过Gradle安装
    • 下载jar安装
    • 通过源码编译
  • 动态mapper

    • 指定package
    • 指定注解
    • 指定接口
    • 指定实体类
  • 团队成员
  • dromara
  • 社区周边
  • 成为开发成员
  • 项目问题

    • 最新版本依赖下载失败
    • 项目编译报错
    • 如何贡献代码
    • 如何贡献文档
    • 使用本项目需要的前置知识
  • 其他问题

    • 作者是在全职维护开源吗
    • 你们这是个什么团队啊
    • 和其他类似的开源项目有什么区别
赞助
  • 1-5-0-alpha
  • 1-6-0-alpha
  • 1-7-0-alpha
  • 1-8-0
  • 1-9-0
  • 1-9-1
  • 2.0.0-alpha+001
  • 2.0.0-alpha+002
  • 2.0.2
Source (opens new window)
首页
  • 项目初衷与诞生
  • 介绍
  • 快速上手
  • 目录结构
  • core模块

    • Opp
    • Sf
    • Map
    • Steam
    • TreeHelper
    • HighlightHelper
    • ReflectHelper
    • BeanHelper
  • plugin模块

    • Database
    • One
    • Many
    • OneToOne
    • OneToMany
  • 安装

    • 通过Maven安装
    • 通过Gradle安装
    • 下载jar安装
    • 通过源码编译
  • 动态mapper

    • 指定package
    • 指定注解
    • 指定接口
    • 指定实体类
  • 团队成员
  • dromara
  • 社区周边
  • 成为开发成员
  • 项目问题

    • 最新版本依赖下载失败
    • 项目编译报错
    • 如何贡献代码
    • 如何贡献文档
    • 使用本项目需要的前置知识
  • 其他问题

    • 作者是在全职维护开源吗
    • 你们这是个什么团队啊
    • 和其他类似的开源项目有什么区别
赞助
  • 1-5-0-alpha
  • 1-6-0-alpha
  • 1-7-0-alpha
  • 1-8-0
  • 1-9-0
  • 1-9-1
  • 2.0.0-alpha+001
  • 2.0.0-alpha+002
  • 2.0.2
Source (opens new window)
  • 指南

    • 快速上手
    • 模块介绍
    • 项目初衷与诞生
  • core

    • Opp
    • Sf
    • TreeHelper
    • LighHight
    • LambdaHelper
    • Steam
    • Maps
    • ReflectHelper
    • BeanHelper
  • plugin

    • DataBase
    • One
    • Many
      • 多条数据查询Many
        • 所用到的实体类
        • of
        • eq
        • value
        • condition
        • like
        • in
        • query
      • 测试用例地址
    • OneToOne
    • OneToMany
    • QueryCondition
    • safe-mode
  • 配置

  • 指南
  • plugin
臧臧
2023-06-01
目录

Many

# 多条数据查询Many

场景:通过某些条件查询出多条数据,然后对这些数据进行处理,比如:高亮、转换、脱敏等等一系列操作

# 所用到的实体类

@Data
public class UserInfo implements IGenerateMapper {

  private static final long serialVersionUID = -7219188882388819210L;

  @TableId(value = "id", type = IdType.AUTO)
  private Long id;

  private String name;
  private Integer age;
  private String email;
    @Version
    private Integer version;

  @TableLogic(value = "'2001-01-01 00:00:00'", delval = "NOW()")
  private LocalDateTime gmtDeleted;
}

# of

场景: 在进行数据查询之前需要构造的查询条件使用Many.of()进行构造 注: 排除复杂条件查询之外的条件都会通过SFunction返回值进行匹配

final Many<UserInfo, Long, UserInfo> manyQuery = Many.of(UserInfo::getId);
// 代表后续的查询条件除去复杂条件查询之外 都会通过id进行匹配

# eq

场景 拼接条件:等于

List<UserInfo> userInfoList = Many.of(UserInfo::getId).eq(1L).query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全部查询出来放到一个集合中

# value

场景:映射返回字段,只需要返回指定的字段 注: 底层执行sql时只会查询对应的字段,并不是select * from xxx然后再map指定字段

List<String> nameList = Many.of(UserInfo::getId).eq(1L).value(UserInfo::getName).query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全都查询出来,并且只返回name字段

# condition

场景:复杂查询自定义拼接

List<String> leAgeNameList =
        Many.of(UserInfo::getId)
            .eq(1L)
            .value(UserInfo::getName)
            .condition(w -> w.le(UserInfo::getAge, 20))
            .query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全都查询出来,并且只返回name字段,且age小于等于20

# like

场景: 拼接条件:模糊查询

Many.of(UserInfo::getEmail).value(UserInfo::getName).like("test3").query();
// 将UserInfo实体对应表中的email属性所对应的字段包含test3的数据全都查询出来,并且只返回name字段

# in

场景:拼接条件:in查询

List<String> inNotEmptyNameList = Many.of(UserInfo::getId).in(Arrays.asList(1L, 2L)).value(UserInfo::getName).query();
// 将UserInfo实体对应表中的id属性所对应的字段等于1或者2的数据全都查询出来,并且只返回name字段

# query

场景:拼接完条件之后,执行查询 注:

  1. 可以传入一个Function函数,用于对查询出来的数据进行处理,参数类型固定为将查询结果保存在Steam中的Steam对象,可以进行一系列处理操作
  2. 如果query之前没有进行条件构造,那么query()方法会查询出表中所有的数据
final Optional<String> optional = Many.of(UserInfo::getId)
            .eq(1L)
            .value(UserInfo::getName)
            .condition(w -> w.le(UserInfo::getAge, 20))
            .query(Steam::findLast);
// 将UserInfo实体对应表中的id属性所对应的字段等于1的数据全都查询出来,并且只返回name字段,且age小于等于20 最后使用Steam.findLast()方法获取最后一个元素

# 测试用例地址

ManyTest (opens new window)

上次更新: 2024/03/29, 09:17:32
One
OneToOne

← One OneToOne→

Theme by Vdoing | Copyright © 2023-2024 阿超 | Apache License, Version 2.0
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式