DoydoQuery v2
首页GitHub
简体中文
简体中文
  • 项目介绍
  • 快速上手
  • 基础用法
    • 增删查改接口
    • 中间表访问接口
    • 数据库方言
    • 分表增删查改
    • 打印SQL日志
  • 实体对象映射
    • 实体对象
    • 关联实体
  • 查询对象映射
    • 查询对象构建
    • 谓词后缀字段
    • 逻辑后缀字段
    • 子查询字段
    • ER关系字段
    • 自定义字段
    • 分页对象
  • 聚合查询
    • 视图对象
    • Having对象
    • 外连接
  • 相关资源
    • 文章
      • 从ORM到OQM:一种基于对象的SQL语句构造方案
由 GitBook 提供支持
在本页
  • 谓词后缀映射
  • 谓词后缀表

这有帮助吗?

  1. 查询对象映射

谓词后缀字段

谓词后缀字段用于构建简单查询条件,谓词后缀字段的名称通过属性谓词表达式(Attribute-Predicate Expression,APE)进行定义,即:

{x∈R:xP(v)}\{x \in \mathcal{R} : xP(v)\}{x∈R:xP(v)}

简记为xP,其中x表示关系R中的属性,P来自于预定义的谓词集合,v表示查询参数。

谓词后缀映射

DoytoQuery采用谓词后缀映射方法,将查询对象中的字段中以预定义谓词结尾的字段映射为基本查询条件。每个基本查询条件由列名、比较运算符和比较值组成。

在查询对象中,用于映射基本查询条件的字段,命名格式为列名加谓词的别名,用于映射查询条件的列名和比较运算符,查询条件的比较值为字段的赋值。 一个查询对象实例中已赋值的字段会被映射为对应的查询条件,并由逻辑运算符AND拼接为查询子句。

以下为后缀映射的两个示例:

import java.util.Arrays;UserQuery userQuery = UserQuery.builder().deleted(true).build();
List<UserEntity> users = userDataAccess.query(userQuery);
// SQL="SELECT id, name, score, memo, deleted FROM t_user WHERE deleted = ?" args="[true]"

UserQuery userQuery = UserQuery.builder().idIn(Arrays.asList(1, 4, 12)).deleted(true).build();
List<UserEntity> users = userDataAccess.query(userQuery);
// SQL="SELECT id, name, score, memo, deleted FROM t_user WHERE id IN (?, ?, ?) AND deleted = ?" args="[1 4 12 true]"

谓词后缀表

谓词后缀表预定义了DoytoQuery中支持的谓词后缀以及映射的查询条件。

谓词后缀
字段名称
赋值
SQL查询条件

(EMPTY)

id

5

id = 5

Eq

idEq

5

id = 5

Not

idNot

5

id != 5

Ne

idNe

5

id <> 5

Gt

idGt

5

id > 5

Ge

idGe

5

id >= 5

Lt

idLt

5

id < 5

Le

idLe

5

id <= 5

NotIn

idNotIn

[1,2,3]

id NOT IN (1,2,3)

In

idIn

[1,2,3]

id IN (1,2,3)

Null

memoNull

true

memo IS NULL

Null

memoNull

false

memo IS NOT NULL

NotLike

nameNotLike

"arg"

name NOT LIKE '%arg%'

Like

nameLike

"arg"

name LIKE '%arg%'

NotStart

nameNotStart

"arg"

name NOT LIKE 'arg%'

Start

nameStart

"arg"

name LIKE 'arg%'

NotEnd

nameNotEnd

"arg"

name NOT LIKE '%arg'

End

nameEnd

"arg"

name LIKE '%arg'

NotContain

nameNotContain

"arg"

name NOT LIKE '%arg%’

Contain

nameContain

"arg"

name LIKE '%arg%’

Rx

nameRx

"arg\d"

name REGEXP 'arg\d’

上一页查询对象构建下一页逻辑后缀字段

最后更新于2个月前

这有帮助吗?