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
    • OneToOne
    • OneToMany
    • QueryCondition
      • 条件查询构造器
        • 用到的实体类
        • 用到的TypeHandler(供参考)
        • query
        • eq
        • in
        • or
        • and
        • activeEq
        • activeIn
        • 支持safe-mode
      • 测试用例地址
    • safe-mode
  • 配置

  • 指南
  • plugin
Cason
2023-07-04
目录

QueryCondition

# 条件查询构造器

功能:部分方法TypeHandler,支持safe-mode,部分方法支持短路执行,传参为空时不再查询。

# 用到的实体类

@Data  
@TableName(value = "user_info", autoResultMap = true)  
static class UserInfoWithJsonName {  
  private Long id;  
  
  @TableField(typeHandler = JsonFieldHandler.class)  
  private Name name;  
}  
  
@Data  
static class Name implements Serializable{  
  private String username;  
  private String nickname;  
   
}

# 用到的TypeHandler(供参考)

public static class JsonFieldHandler extends AbstractJsonFieldHandler<Object> {  
  
  ObjectMapper objectMapper = new ObjectMapper();  
  
  @Override  
  public Object parse(String json, TableInfo tableInfo, TableFieldInfo fieldInfo) {  
    Class<?> fieldType = fieldInfo.getField().getType();  
    return ((SerSupp<Object>) (() -> objectMapper.readValue(json, fieldType))).get();  
  }  
  
  @Override  
  @SneakyThrows  public String toJson(Object obj, TableInfo tableInfo, TableFieldInfo fieldInfo) {  
    return objectMapper.writeValueAsString(obj);  
  }  
}

注意

- 以下提到的方法是支持了`TypeHandler`的,其他方法暂未适配

# query

用于初始化条件构造器(QueryCondition)

QueryCondition<UserInfoWithJsonName> wrapper = QueryCondition.query(UserInfoWithJsonName.class)
// 传入实体类的类对象
QueryCondition<UserInfoWithJsonName> wrapper = QueryCondition.query(user);
// 传入实体类的对象

# eq

拼接条件:等于

QueryCondition<UserInfoWithJsonName> wrapper =  
    QueryCondition.query(UserInfoWithJsonName.class).eq(UserInfoWithJsonName::getName, name);  
val list = Database.list(wrapper);

# in

拼接条件:限定范围

QueryCondition<UserInfoWithJsonName> wrapper =  
    QueryCondition.query(UserInfoWithJsonName.class)  
        .activeIn(UserInfoWithJsonName::getName, Lists.of(name1, name3));  
  
val list = Database.list(wrapper);

# or

复杂查询:多条件逻辑或

QueryCondition<UserInfoWithJsonName> wrapper =  
        QueryCondition.query(UserInfoWithJsonName.class)  
           .in(UserInfoWithJsonName::getName, Lists.of(name1, name3))  
           .or(i -> i.eq(UserInfoWithJsonName::getName, user2.getName()));

# and

复杂查询:多条件逻辑与

QueryCondition<UserInfoWithJsonName> wrapper =  
        QueryCondition.query(UserInfoWithJsonName.class)  
                .eq(UserInfoWithJsonName::getId, 1L)  
                .and(i -> i.eq(UserInfoWithJsonName::getName, user2.getName()));

# activeEq

场景:当传参为空时,不进行查询,避免阻塞。 拼接条件:等于

注意

- 该方法标记为废弃,自愿选择使用
    QueryCondition<UserInfoWithJsonName> wrapper =  
        QueryCondition.query(UserInfoWithJsonName.class)  
            .activeEq(UserInfoWithJsonName::getName, null);  
  
    val list = Database.list(wrapper);

# activeIn

场景:当传参为空时,不进行查询,避免阻塞。 拼接条件:限定范围

注意

- 该方法标记为废弃,自愿选择使用
QueryCondition<UserInfoWithJsonName> wrapper =  
    QueryCondition.query(UserInfoWithJsonName.class)  
        .activeIn(UserInfoWithJsonName::getName, new ArrayList<>());
val list = Database.list(wrapper);

# 支持safe-mode

# 测试用例地址

QueryCondition (opens new window)

上次更新: 2024/03/29, 09:17:32
OneToMany
safe-mode

← OneToMany safe-mode→

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