运算符相关示例
嵌套and、or和in
查询“名称”为“张三”,且“创建者”为“李四”或“修改者”为“王五”、“赵六”的记录。示例如下:
{
"params": {
"sort": "desc",
"orderBy": "name",
"filter": {
"joiner": "and",
"conditions": [
{
"conditionName": "name",
"operator": "=",
"conditionValues": [
"张三"
]
},
{
"joiner": "or",
"conditions": [
{
"conditionName": "creator",
"operator": "=",
"conditionValues": [
"李四"
]
},
{
"conditionName": "modifier",
"operator": "in",
"conditionValues": [
"王五",
"赵六"
]
}
]
}
]
}
}
}
如上示例可得出如下查询语句:
(name=张三) and ( (creator=李四) or (modifier in (王五, 赵六) ) ) order by name desc
其中,“joiner”用于控制相同层次的“conditions”间的关系。
单个条件
- 示例1:
{ "params": { "sort": "desc", "orderBy": "name", "filter": { "conditionName": "name", "operator": "=", "conditionValues": [ "张三" ] } } } - 示例2:
{ "params": { "sort": "desc", "orderBy": "name", "filter": { "joiner": "and", // and或者or "conditions": [ { "conditionName": "name", "operator": "=", "conditionValues": [ "张三" ] } ] } } }
模型自身属性
支持使用ConditionName和orderBy字段。如果输入的入参不是该模型的属性,会提示错误。其错误示例如下所示:
{
"result": "FAIL",
"data": [],
"errors": [
{
"code": "rdm.coresdk.unknown.exception",
"message": "unknown exception",
"detailMessage": "org.hibernate.QueryException: could not resolve property: string of: com.example.it.rdm.bean.module.DM0829002 [from com.example.it.rdm.bean.module.DM0829002 p left join fetch p.master where p.rdmDeleteFlag = 0 and UPPER(p.string) = UPPER('string') and p.latest = '1' order by p.id desc]"
}
]
}
其中,“could not resolve property: string”为具体错误的属性名称。
ISNULL和NOTNULL传参
{
"params": {
"sort": "desc",
"orderBy": "name",
"filter": {
"joiner": "and", // 或者or
"conditions": [
{
"conditionName": "name",
"operator": "ISNULL", // 或者NOTNULL
"conditionValues": [ // conditionValues可不写
"张三"
]
}
]
}
}
}
参考对象
假设TestQuery的参考对象是SimpleEntity(别名为ref),SimpleEntity的别名为ref,有Long类型的ID字段和String类型的Name字段。用户希望对SimpleEntity过滤ID,其示例代码如下所示:
{
"params": {
"filter": {
"joiner": "and",
"conditions": [
{
"conditionName": "ref.id",
"operator": "=",
"conditionValues": [
"406889137980243968"
]
}
]
}
}
}
如需过滤其他属性,基于新增过滤条件即可。
扩展属性
扩展属性的固定前缀为“extAttrs”,格式有“extAttrs.扩展属性名”和“extAttrs.扩展属性名.value”两种。其中,“extAttrs.扩展属性名.value”适用于自定义精度的扩展属性。
{
"params": {
"filter": {
"joiner": "and",
"conditions": [
{
"conditionName": "extAttrs.extAttrName1",
"operator": "=",
"conditionValues": [
"406889137980243968"
]
},
{
"conditionName": "extAttrs.extAttrName2.value",
"operator": "=",
"conditionValues": [
"12.133"
]
}
]
}
}
}
分类属性
分类属性的固定前缀为“clsAttrs”,格式有“clsAttrs.分类名.分类内属性名”和“clsAttrs.分类名.分类内属性名.value”两种。其中,“clsAttrs.分类名.分类内属性名.value”适用于自定义精度的分类属性。
{
"params": {
"filter": {
"joiner": "and",
"conditions": [
{
"conditionName": "clsAttrs.clsAttrName.attrName1",
"operator": "=",
"conditionValues": [
"123"
]
},
{
"conditionName": "clsAttrs.clsAttrName.attrName2.value",
"operator": "=",
"conditionValues": [
"12.123"
]
}
]
}
}
}
扩展类型+扩展属性/分类属性
扩展类型+扩展属性/分类属性的固定前缀为“clsAttrs”,格式有“clsAttrs.分类名.分类内属性名”和“clsAttrs.分类名.分类内属性名.value”两种。其中,“clsAttrs.分类名.分类内属性名.value”适用于自定义精度的扩展类型+扩展属性/分类属性。如需查询此类属性,需额外增加一个过滤条件(rdmExtensionType),用于指明具体的扩展类型。
以“services/dynamic/api/Test0928001/find/20/1”的URI为例:
{
"params": {
"sort": "DESC",
"orderBy": "lastUpdateTime",
"filter": {
"joiner": "and",
"conditions": [
{
"conditionName": "clsAttrs.A0001.Testz",
"operator": "like",
"conditionValues": [
"WWW"
]
},
{
"conditionName": "rdmExtensionType",
"operator": "=",
"conditionValues": [
"Test0928001"
]
}
]
},
"isNeedTotal": false
}
}
多字段排序
多字段排序一般使用“sorts”字段表示,其结构如下:
{
"sorts": [
{
"sort": "DESC",
"orderBy": "description"
},
{
"sort": "ASC",
"orderBy": "name"
}
]
}
使用“sorts”字段后,将按照其列表顺序进行排序。如上所示,对象会先按照“description”进行倒序排序,再按照“name”进行正序排序。
以“services/api/SZAPITEST202211280329/find/20/1”的URI为例,使用如下接口进行多字段排序。
- Find接口:
{ "params": { "sorts": [ { "sort": "DESC", "orderBy": "description" }, { "sort": "ASC", "orderBy": "name" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] }, { "conditionName": "rdmDeleteFlag", "operator": "=", "conditionValues": [ "0" ] } ] } } } - Query接口:
{ "params": { "sorts": [ { "sort": "DESC", "orderBy": "description" }, { "sort": "ASC", "orderBy": "name" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] }, { "conditionName": "rdmDeleteFlag", "operator": "=", "conditionValues": [ "0" ] } ] } } } - Select接口:
{ "params": { "selectedField": [ { "name": "name", "nameAs": "nameAsName" }, { "name": "description", "nameAs": "nameAsDescription" }, { "name": "creator" }, { "name": "id" } ], "sorts": [ { "sort": "DESC", "orderBy": "name" }, { "sort": "asc", "orderBy": "id" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "description", "operator": "=", "conditionValues": [ "a" ] } ] } } }