
# Select
#### 功能介绍
指定需要的属性及查询条件，返回指定属性的结果集。
#### 入参
```
POST http://{Endpoint}/rdm_{appID}_app/services/dynamic/api/{entityName}/select/pageSize/curPage
{
    "params": {
        "selectedField": [
            {
                "name": "属性名称",
                "nameAs": "属性别名"
            }
        ],
        "sorts": [
            {
                "sort": "DESC",
                "orderBy": "属性名称"
            }
        ],
        "filter": {
            "joiner": "and",
            "conditions": [
                {
                    "conditionName": "属性名称",
                    "operator": "=",
                    "conditionValues": [
                        "属性值"
                    ]
                }
            ]
        }
    }
}
```
- {Endpoint}表示数据建模引擎所在域名或IP地址，{appID}表示应用ID，{entityName}表示实体的英文名称。
- 在URL上填写待查询的页码（curPage）和每页可显示的数据量（pageSize）。
- 在JSON代码中的设置sorts字段、filter字段、SelectedField字段和isTransformResBody字段。
  - sorts：填写需要按哪个字段进行排序，可填写模型自身属性、参考对象的属性、扩展属性及分类属性，也可为空。
  
  - filter：填写过滤条件，可为空。
  
  - SelectedField：填写需要输出的字段和别名。JSON参数格式为"参数名称.参数值"，如果填写的字段为JSON类型，SelectedField的"name"参数需要填写为"JSON类型字段的英文名称.JSON参数的名称"。例如，需要输出的JSON类型字段为"partJSON"，存在一条数据[{"city":"shenzhen"}]，SelectedField填写示例如下：
    ```
    "selectedField": [
          {
            "name": "partJSON.city",
            "nameAs": "partJSON"
          }
        ]
    ```
    
  
  - isTransformResBody：在通过select接口查询分类类型属性，并希望获取JSON格式的返回结果时，可以将"isTransformResBody"参数设置为"true"。如果未填写该参数或将其设置为"false"，系统将使用默认的数据格式返回结果。
   
 
#### 出参
指定属性的结果集。
#### 示例1
**示例场景**
有一个数据实体（People），先按名称倒序排序，再按年龄倒序排序。而后根据性别为男性进行过滤，且"SelectedField"字段只选择输出名称和年龄，别名为"nameAsName"和"nameAsAge"。
**入参示例**
```
POST http://dme.cn-north-4.huaweicloud.com/rdm_01a2b2c4764d4e00f123g345fd9baa9f_app/services/dynamic/api/People/select/20/1
{
    "params": {
        "selectedField": [
            {
                "name": "name",
                "nameAs": "nameAsName"
            },
            {
                "name": "age",
                "nameAs": "nameAsAge"
            }
        ],
        "sorts": [
            {
                "sort": "DESC",
                "orderBy": "name"
            },
            {
                "sort": "DESC",
                "orderBy": "age"
            }
        ],
        "filter": {
            "joiner": "and",
            "conditions": [
                {
                    "conditionName": "gender",
                    "operator": "=",
                    "conditionValues": [
                        "男"
                    ]
                }
            ]
        }
    }
}
```
**出参示例**
```
{
    "result": "SUCCESS",
    "data": [
        {
            "nameAsAge": 20,
            "nameAsName": "李四"
        },
        {
            "nameAsAge": 18,
            "nameAsName": "张三"
        }
    ],
    "errors": [],
    "pageInfo": {
        "curPage": 1,
        "pageSize": 20,
        "totalRows": 0,
        "totalPages": 0
    }
}
```
#### 示例2
**示例场景**
有一个数据实体（XxDMETest），该实体包含一个参考对象类型的属性（testDme）。而后根据testDme的ID，查询该属性ID的所有信息，并按ID倒序排序。
**入参示例**
```
POST https://dme.cn-north-4.huaweicloud.com/rdm_01a2b2c4764d4e00f123g345fd9baa9f_app/services/dynamic/api/XxDMETest/select/20/1
{
    "params": {
        "selectedField": [
            {
                "name" : "testDme"
            }
        ],
        "orderBy": "id",
        "sort": "DESC",
        "isNeedTotal": true,
        "filter": {
            "conditions": [
                {
                    "conditionName": "id",
                    "operator": "=",
                    "conditionValues": [
                        "507612209518485504"
                    ]
                }
            ],
            "joiner": "and"
        }
    }
}
```
**出参示例**
```
{
    "result": "SUCCESS",
    "data": [
        {
            "testDme": {
                "id": "111",
                "creator": "XDM_Developer 93172bbfd0f64437956d4c9de1234567",
                "modifier": "XDM_Developer 93172bbfd0f64437956d4c9de1234567",
                "createTime": "2023-06-06T07:32:59.629+0000",
                "lastUpdateTime": "2023-06-06T07:32:59.629+0000",
                "rdmVersion": 1,
                "rdmDeleteFlag": 0,
                "rdmExtensionType": "XxxDME",
                "tenant": {
                    "id": "-1",
                    "creator": "xdmAdmin",
                    "modifier": "xdmAdmin",
                    "createTime": "2023-02-08T06:38:48.567+0000",
                    "lastUpdateTime": "2023-02-08T06:38:48.567+0000",
                    "rdmVersion": 1,
                    "rdmDeleteFlag": 0,
                    "rdmExtensionType": "Tenant",
                    "tenant": null,
                    "className": "Tenant",
                    "name": "basicTenant",
                    "description": "默认租户",
                    "kiaguid": null,
                    "securityLevel": "internal",
                    "code": "basicTenant",
                    "disableFlag": false,
                    "dataSource": "DefaultDataSource"
                },
                "className": "XxxDME"
            }
        }
    ],
    "errors": [],
    "pageInfo": {
        "curPage": 1,
        "pageSize": 20,
        "totalRows": 1,
        "totalPages": 1
    }
}
```
