跳到主要内容

类型

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 示例
AND并WHERE t.field = 'xyz' AND t.field <> 'abc'
OR或WHERE 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无创建组