GoooQo v0.2.3
首页仓库演示
简体中文
简体中文
  • GoooQo介绍
  • 快速上手
  • 接口使用
    • 数据库连接
    • 事务
    • 增删查改接口
  • 实体映射
    • 实体对象
    • 关联实体
  • 查询条件构建
    • 查询对象定义
      • 谓词后缀字段
      • 逻辑后缀字段
      • 子查询字段
      • ER关系字段
      • 自定义字段
    • 分页排序对象
  • 聚合查询
    • 视图对象
    • 聚合查询对象
    • 自然连接
    • 外连接
  • 高级用法
    • 数据库方言
    • 锁
  • 相关资源
    • 文章
      • 从ORM到OQM:一种基于对象的SQL语句构造方案
      • 在GoooQo中如何表示`select * from user where id = ? or name = ? and age = ?`
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. 查询条件构建
  2. 查询对象定义

子查询字段

对于一般的子查询条件,例如score > (SELECT avg(score) FROM t_user WHERE removed = ?),在OQM中被分为三个部分分别进行映射:

  • score >

  • SELECT avg(score) FROM t_user

  • WHERE clause

第一部分score >, 可以使用字段名scoreGtXxx来映射得到。 谓词后缀之后定义的字符串仅用于区分重复的字段名,在映射时会被忽略。

第二部分包含一个列名和一个表名,这些属于不变的静态,GoooQo提供了两种标签来保存这些信息: 一种是标签subquery,用于定义该子查询语句; 一种是标签select和from的组合,分别保存列名和表名。

第三部分是另一个WHERE子句,可以通过查询对象来映射。因此,我们将字段类型定义为对应的查询对象,并通过查询对象映射方法将字段的值映射为子查询中WHERE子句。

示例(v0.2.0+)

ScoreLtAvg *UserQuery `subquery:"select avg(score) from User"`
ScoreLtAny *UserQuery `subquery:"SELECT score FROM User"`
ScoreLtAll *UserQuery `subquery:"select score from User"`
ScoreGtAvg *UserQuery `select:"avg(score)" from:"User"`
上一页逻辑后缀字段下一页ER关系字段

最后更新于8个月前

这有帮助吗?