## 数据结构

```
{
    "page": 1,
    "size": 20,
    "onlyCount": false,
    "criteria": {
        "age": {
            "$gt": 21
        }
    },
    "orders": [
        {
            "column": "name",
            "asc": false
        }
    ],
    "withColumns": [ "roles" ]
}  
```

参数说明

| 字段        |          | 说明                      |
| ----------- | -------- | ------------------------- |
| page        |          | 分页页码,从1开始          |
| size        |          | 分页大小                  |
| onlyCount   |          | 是否只统计数量,默认false  |
| criteria    |          | 查询条件                  |
| orders      | object[] | 排序参数,支持多个字段排序 |
|             | column   | 排序字段                  |
|             | asc      | 是否升序,默认true         |
| withColumns |          | 额外返回的扩展字段清单    |
|             |          |                           |

## criteria说明

#### 符号说明

| 符号                     | 说明                           |
| ------------------------ | ------------------------------ |
| $ne                      | dayu                           |
| \$gt, \$gte, \$lt, \$lte | 大于, 大于等于, 小于, 小于等于 |
| \$in                     | 范围查询                       |
| \$like, \$notlike        | 模糊匹配 不匹配                |
| \$null                   | 是否为空                       |
|                          |                                |
|                          |                                |

以下实例针对的实体类型user如下

| 字段 | 类型   |
| ---- | ------ |
| id   | int    |
| name | string |
| age  | int    |

#### 相等

查询name为zhangsan的数据

```
{
    "criteria": {
        "name": "zhangsan"
    }
}
```

#### 不等于

查询name不等于张三的数据

```
{
    "criteria": {
        "name": {
            "$ne": "zhangsan"
        }
    }
}
```

#### 是否为空

查询name不为空的数据

```
{
    "criteria": {
        "name": {
            "$null": false
        }
    }
}
```



#### 比较大小

查询age大于25小于35的数据

```
{
    "criteria": {
        "age": {
            "$gt": 25,
            "$lt": 35
        }
    }
}
```

#### in查询

查询name为zhangsan、lisi的数据

```
{
    "criteria": {
        "name": {
            "$in": [ "zhangsan", "lisi" ]
        }
    }
}
```

也可直接写成

```
{
    "criteria": {
        "name": [ "zhangsan", "lisi" ]
    }
}
```

#### 模糊查询

查询name以zh开头的数据

```
{
    "criteria": {
        "name": {
            "$like": "zh%"
        }
    }
}
```



## withColumns说明

通过withColumns可以控制返回的数据内容,可以一定程度上提供服务性能.

withColumns粒度比较粗,一般由服务提供者决定哪些字段可以通过withColumns来控制.

假设数据如下

```
{
    "name": "zhangsan",
    "age": 22,
    "roles": [ "administrator", "manager" ]
}
```

将roles设计为可选字段,由withColumns来管理,如果查询参数中有withColumns并包含roles,则返回roles字段

默认查询和返回的数据内容为

```
{
    "criteria": {
        "name": "zhangsan"
    }
}
```



```
{
    "name": "zhangsan",
    "age": 22
}
```

包含withColumns时的查询参数和返回的数据

```
{
    "criteria": {
        "name": "zhangsan"
    },
    "withColumns": [ "roles" ]
}
```

```
{
    "name": "zhangsan",
    "age": 22,
    "roles": [ "administrator", "manager" ]
}
```















