跳到主要内容

类型

GraphQL 类型系统及 Graphoenix 拓展

GraphQL 类型

关于 GraphQL 类型定义的详细内容, 请参考 GraphQL 官网的类型系统(中文版)

内置标量类型(Scalar Types)

Grpahoenix 在GraphQL 标量的基础之上, 根据Microprofile GraphQL 协议的规定进行拓展

参数名说明JSON 类型Java 类型MySQL 类型protobuf 类型
Int有符号 32 位整数numberint/Integer
short/Short
byte/Byte
INTint32
Float有符号双精度浮点值numberfloat/Float
double/Double
FLOATfloat
StringUTF‐8 字符序列stringString
char/Character
VARCHARstring
Booleantrue 或者 falsetrue/falseboolean/BooleanBOOLbool
IDID 标量类型表示一个唯一标识符,ID 类型使用和 String 一样的方式序列化stringStringVARCHAR/INTstring
BigInteger表示一个任意大小且精度完全准确的浮点数numberBigIntegerBIGINTgoogle.type.Decimal
BigDecimal表示任意大小的整数numberBigDecimalDECIMALgoogle.type.Decimal
Date日期stringjava.time.LocalDateDATEgoogle.type.Date
Time时间stringjava.time.LocalTimeTIMEgoogle.type.TimeOfDay
DateTime日期时间stringjava.time.LocalDateTimeDATETIMEgoogle.type.DateTime
Timestamp时间戳stringjava.time.LocalDateTimeTIMESTAMPgoogle.protobuf.Timestamp

内置枚举类型(Enumeration Types)

Graphoenix 内置枚举类如下

Operator

参数名说明SQL 示例
EQ等于WHERE t.field = 'xyz'
NEQ不等于WHERE t.field <> 'xyz'
LK匹配(需要%)WHERE t.field LIKE '%xyz%'
NLK不匹配(需要%)WHERE t.field NOT LIKE '%xyz%'
GT大于WHERE t.field > 'xyz'
GTE大于等于WHERE t.field >= 'xyz'
LT小于WHERE t.field < 'xyz'
LTE小于等于WHERE t.field <= 'xyz'
NIL为 NULLWHERE t.field IS NULL
NNIL不为 NULLWHERE t.field IS NOT NULL
IN属于WHERE t.field IN ('x', 'y', 'z')
NIN不属于WHERE t.field NOT IN ('x', 'y', 'z')
BT在...区间(数组的每两个元素为一个区间)WHERE t.field > 1 AND t.field < 3 AND t.field > 5 AND t.field < 7
NBT不在...区间(数组的每两个元素为一个区间)WHERE t.field < 1 AND t.field > 3 AND t.field < 5 AND t.field > 7

Conditional

参数名说明SQL 示例
ANDWHERE t.field = 'xyz' AND t.field <> 'abc'
ORWHERE t.field = 'xyz' OR t.field <> 'abc'

Sort

参数名说明SQL 示例
ASC升序ORDER BY t.field ASC
DESC降序ORDER BY t.field DESC

Func

参数名说明SQL 示例
COUNT条数SELECT COUNT( field ) FROM t
MAX最大值SELECT MAX( field ) FROM t
MIN最小值SELECT MIN( field ) FROM t
SUM合计SELECT SUM( field ) FROM t
AVG平均值SELECT AVG( field ) FROM t

Protocol

参数名说明协议
LOCAL本地调用
GRPCgRPChttps://grpc.io/
HTTPhttp
RSOCKETRSockethttps://rsocket.io/

内置对象类型和字段(Object Types and Fields)

(Object)Connection

Graphoenix 会自动为所有 Object 类型生成对应的Connection对象

字段类型说明
totalCountInt总条数
pageInfoPageInfo分页(游标)信息
edges[(Object)Edge]查询边缘

(Object)Edge

Graphoenix 会自动为所有 Object 类型生成对应的Edge对象

字段类型说明
cursorString游标字段
nodeObject查询节点

PageInfo

字段类型说明
hasNextPageBoolean是否存在下一页
hasPreviousPageBoolean是否存在上一页
startCursorString开始游标
endCursorString结束游标

内置输入类型(Input Types)

(Scalar/Enum)Expression

Graphoenix 为每个 Scalar 和 Enum 类型生成 Expression 输入类型用于查询

参数名类型默认值说明SQL 示例
oprOperatorEQ匹配符号WHERE t.field = 'xyz'
val(Scalar/Enum)匹配值WHERE t.field = 'xyz'
arr[(Scalar/Enum)]匹配列表WHERE t.field IN ('x', 'y', 'z')
skipNullBooleanfalse如果值为 NULL 忽略参数

(Object)Expression

Graphoenix 为每个 Object 类型生成 Expression 输入类型用于查询

参数名类型默认值说明SQL 示例
(field)(Scalar/Enum/Object)Expression条件字段SELECT id FROM t WHERE t.field = 'xyz'
condConditionalAND参数内条件的组合关系WHERE t.field = 'xyz' AND t.field <> 'abc'
notBooleanfalse条件取非WHERE NOT (t.field = 'xyz' AND t.field <> 'abc')
exs[(Object)Expression]同一字段多次作为查询条件时可使用此参数WHERE ( t.field = 'xyz' AND t.field <> 'abc' )

(Object)OrderBy

Graphoenix 为每个 Object 类型生成 Expression 输入类型用于排序

参数名类型默认值说明SQL 示例
(field)Sort排序方式SELECT id FROM t ORDER BY t.field

(Object)Input

Graphoenix 为每个 Object 类型生成 Expression 输入类型用于变更

参数名类型默认值说明SQL 示例
(field)Scalar/Enum/(Object)Input变更字段INSERT INTO t ( id, field ) VALUES ( 'x', 'y' ) ON DUPLICATE KEY UPDATE t.id = VALUES ( t.id ), t.field = VALUES ( t.field )
where(Object)Expression更新条件UPDATE t SET field = 'z' WHERE id = 'x'
isDeprecatedBooleanfalse删除标记( @merge 指令存在时表示从数组中移除)

内置接口(Interfaces)

Meta

Graphoenix 规定所有 Object 类型实现 Meta 接口, 用于保存元信息

参数名类型默认值说明
isDeprecatedBooleanfalse删除标记
versionInt版本
realmIdInt
createUserIdString创建用户
createTimeTimestamp创建时间
updateUserIdString更新用户
updateTimeTimestamp更新时间
createGroupIdString创建组