跳到主要内容

Schema

提示
  • Nop 平台还处于开发阶段, 本文档中的实践方案可能会部分失效,但本人精力有限,无法及时跟进,请自行按照最新代码调整;
  • 您可以与智谱清言 AI 进行问答互动以了解 Nop 平台相关内容;
  • 若此文对您有很大帮助,请投币支持一下吧;
版权声明

Schema 的模型结构定义在 /nop/schema/schema/schema.xdef 中,用于声明数据类型和值约束等。

/nop/schema/schema/schema.xdef/nop/schema/schema/schema-node.xdefxdef:ref 引用
  • xdef:name 用于命名 XDef 节点,xdef 文件内部的其他节点可以通过 xdef:ref 引用其定义。该名字也对应于为该节点所生成的 Java 类名;
  • xdef:ref 用于引用内部或外部 xdef 定义,前者引用的是 xdef:name 指定的名字, 后者引用的是 xdef 文件的虚拟路径。xdef 引用相当于继承,也可在当前节点上添加其他属性或子节点;
  • XDef 之间通过 xdef:ref 实现扩展,而 XDSL 之间则通过 x:extends 实现扩展;

Schema 结构

属性值类型属性名称必填
type

generic-type

泛型类型名称

数据对应的 Java 类名,如:

<schema type="java.lang.Long" />
<schema type="java.lang.Boolean" />
<schema type="java.lang.String" />
<schema type="java.sql.Timestamp" />
<schema type="java.lang.Byte" />

<schema type="List&lt;java.lang.String&gt;" />
<schema type="Map&lt;java.lang.String, java.lang.Object&gt;" />
stdDomain

xml-name

标准数据域名称

引用标准数据域字典的字典项名称,从而与标准数据域类型相关的处理进行绑定,如:

<schema
type="java.lang.String"
stdDomain="xpl"
/>

<schema
type="java.lang.String"
stdDomain="json"
/>

详见 /dict/core/std-domain.dict.yaml基础数据字典 - 标准数据域

domain

xml-name

自定义数据域名称

引用自定义数据域字典的字典项名称,从而与自定义类型数据相关的处理进行绑定。 自定义数据域为从业务角度设计的通用数据类型,如:

<schema
type="java.lang.Byte"
stdDomain="boolFlag"
domain="delFlag"
/>

数据自身为 java.lang.Byte 类型,但其标准数据域为 boolFlag, 在 NopGraphQL 引擎中,客户端提交的数据将被自动转换为 java.lang.Byte。 而定义 domain,则在业务处理逻辑中可根据名称 delFlag 进行 ORM 实体对象的软删除处理,如,删除实体时仅标记 <schema /> 对应的属性为 true,并在查询时过滤掉 <schema /> 对应的属性为 true 的数据

bizObjNamestring对应 GraphQL 中的对象名

对象关联时,指定关联对象的名称

precisionint数值的总位数(精度)

指定 BigDecimal 的数值的最多个数,包括小数点前后的位数,如:

<schema type="java.math.BigDecimal"
precision="30"
scale="6"
/>

:前导零不计入总数,如,0.001 的精度为 1,刻度为 3。 但 00.000 的精度为 1,刻度为 03

scaleint小数位数(刻度)

指定 BigDecimal 的小数位数,如:

<schema type="java.math.BigDecimal"
precision="30"
scale="6"
/>

:前导零不计入总数,如,0.001 的精度为 1,刻度为 3。 但 00.000 的精度为 1,刻度为 03

minLengthint字符串最小长度
<schema type="java.lang.String"
minLength="10"
/>
maxLengthint字符串最大长度
<schema type="java.lang.String"
maxLength="100"
/>
dictstring对应数据字典的名称

<schema /> 对应的属性映射的是数据字典时,需配置该项。 其可以是 Java 枚举类的类名,或者 dict 定义文件的路径,如:

<schema type="java.lang.Integer"
dict="core/active-status"
/>

<schema type="java.lang.String"
precision="10"
dict="io.nop.orm.sql_lib.SqlMethod"
/>
<item />ISchema列表项数据 Schema

如果是列表类型,且列表元素类型为对象关联时,需配置 <item />,其结构为 Schema 自身,如:

<schema>
<item bizObjName="NopAuthUser" />
</schema>