1# @ohos.data.dataSharePredicates (数据共享谓词) 2<!--Kit: ArkData--> 3<!--Subsystem: DistributedDataManager--> 4<!--Owner: @woodenarow--> 5<!--Designer: @woodenarow; @xuelei3--> 6<!--Tester: @chenwan188; @logic42--> 7<!--Adviser: @ge-yafang--> 8 9**谓词(DataSharePredicates)** 是开发者通过DataShare查询数据库中的数据所使用的筛选条件,经常被应用在更新数据、删除数据和查询数据中。 10 11谓词的接口函数与数据库的筛选条件一一对应,开发者在使用前需了解数据库相关知识。 12 13谓词(DataSharePredicates)的使用场景如下: 14 15- 用于在媒体文件管理服务作为检索条件使用,参考[相册管理模块检索条件](../apis-media-library-kit/arkts-apis-photoAccessHelper-i.md#fetchoptions)。此种场景下,开发者无需关注数据库类型。 16 17<!--Del--> 18- 用于调用[关系型数据库](js-apis-data-relationalStore-sys.md)和[键值型数据库](js-apis-distributedKVStore-sys.md)系统接口时的检索条件使用。此种场景下,开发者根据使用的数据库类型参考对应的谓词使用方法。 19<!--DelEnd--> 20 21> **说明:** 22> 23> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 24> 25> - 本模块接口仅可在Stage模型下使用。 26 27 28 29## 导入模块 30 31```ts 32import { dataSharePredicates } from '@kit.ArkData'; 33``` 34 35## DataSharePredicates 36提供用于不同实现不同查询方法的数据共享谓词。该类型不是多线程安全的,如果应用中存在多线程同时操作该类派生出的实例,注意加锁保护。 37 38### equalTo<sup>10+</sup> 39 40equalTo(field: string, value: ValueType): DataSharePredicates 41 42该接口用于配置谓词以匹配值等于指定值的字段。 43 44目前仅关系型数据库及键值型数据库支持该谓词。 45 46**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 47 48**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 49 50**参数:** 51 52| 参数名 | 类型 | 必填 | 说明 | 53| ------ | --------------------------------------------------- | ---- | ---------------------- | 54| field | string | 是 | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。 | 55| value | [ValueType](js-apis-data-valuesBucket.md#valuetype) | 是 | 指示要与谓词匹配的值。</br>value为undefined或者null时,此次调用接口配置的谓词无效。 | 56 57**返回值:** 58 59| 类型 | 说明 | 60| ------------------------------------------- | -------------------------- | 61| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 62 63**示例:** 64 65```ts 66let predicates = new dataSharePredicates.DataSharePredicates(); 67predicates.equalTo("NAME", "Rose"); 68``` 69 70 71### and<sup>10+</sup> 72 73and(): DataSharePredicates 74 75该接口用于将和条件添加到谓词中。 76 77目前仅关系型数据库及键值型数据库支持该谓词。 78 79**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 80 81**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 82 83**返回值:** 84 85| 类型 | 说明 | 86| ------------------------------------------- | ---------------------- | 87| [DataSharePredicates](#datasharepredicates) | 返回带有和条件的谓词。 | 88 89**示例:** 90 91```ts 92let predicates = new dataSharePredicates.DataSharePredicates(); 93predicates.equalTo("NAME", "lisi") 94 .and() 95 .equalTo("SALARY", 200.5); 96``` 97 98### orderByAsc<sup>10+</sup> 99 100orderByAsc(field: string): DataSharePredicates 101 102该接口用于配置谓词以匹配其值按升序排序的列。 103 104目前仅关系型数据库及键值型数据库支持该谓词。 105 106**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 107 108**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 109 110**参数:** 111 112| 参数名 | 类型 | 必填 | 说明 | 113| ------ | ------ | ---- | ------------------ | 114| field | string | 是 | 数据库表中的列名。 </br>field为undefined或者null时,此次调用接口配置的谓词无效。 | 115 116**返回值:** 117 118| 类型 | 说明 | 119| ------------------------------------------- | -------------------------- | 120| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 121 122**示例:** 123 124```ts 125let predicates = new dataSharePredicates.DataSharePredicates(); 126predicates.orderByAsc("AGE"); 127``` 128 129### orderByDesc<sup>10+</sup> 130 131orderByDesc(field: string): DataSharePredicates 132 133该接口用于配置谓词以匹配其值按降序排序的列。 134 135目前仅关系型数据库及键值型数据库支持该谓词。 136 137**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 138 139**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 140 141**参数:** 142 143| 参数名 | 类型 | 必填 | 说明 | 144| ------ | ------ | ---- | ------------------ | 145| field | string | 是 | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。 | 146 147**返回值:** 148 149| 类型 | 说明 | 150| ------------------------------------------- | -------------------------- | 151| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 152 153**示例:** 154 155```ts 156let predicates = new dataSharePredicates.DataSharePredicates(); 157predicates.orderByDesc("AGE"); 158``` 159 160### limit<sup>10+</sup> 161 162limit(total: number, offset: number): DataSharePredicates 163 164该接口用于配置谓词以指定结果数和起始位置。 165 166目前仅关系型数据库及键值型数据库支持该谓词。 167 168**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 169 170**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 171 172**参数:** 173 174| 参数名 | 类型 | 必填 | 说明 | 175| -------- | ------ | ---- | -------------- | 176| total | number | 是 | 最大数据记录数。</br>当使用键值型数据库且total为undefined或null时,会限制最大记录数为0。</br>当使用关系型数据库且total为undefined或null时,不会限制最大记录数。</br>当使用键值型数据库时,取值范围参考[键值型数据库limit接口](./js-apis-distributedKVStore.md#limit)中的total参数说明。</br>当使用关系型数据库时,取值范围参考[关系型数据库limitAs接口](arkts-apis-data-relationalStore-RdbPredicates.md#limitas)中的value参数说明。| 177| offset | number | 是 | 指定查询结果的起始位置。</br>当offset为undefined或null时,起始位置为结果集的最前端。</br>当使用键值型数据库时,取值范围参考[键值型数据库limit接口](./js-apis-distributedKVStore.md#limit)中的offset参数说明。</br>当使用关系型数据库时,取值范围参考[关系型数据库offsetAs接口](arkts-apis-data-relationalStore-RdbPredicates.md#offsetas)中的rowOffset参数说明。| 178 179**返回值:** 180 181| 类型 | 说明 | 182| ------------------------------------------- | -------------------------- | 183| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 184 185**示例:** 186 187```ts 188let predicates = new dataSharePredicates.DataSharePredicates(); 189predicates.equalTo("NAME", "Rose").limit(10, 3); 190``` 191 192### in<sup>10+</sup> 193 194in(field: string, value: Array<ValueType>): DataSharePredicates 195 196该接口用于配置谓词以匹配值在指定范围内的字段。 197 198目前仅关系型数据库及键值型数据库支持该谓词。 199 200**系统能力:** SystemCapability.DistributedDataManager.DataShare.Core 201 202**原子化服务API:** 从API version 20开始,该接口支持在原子化服务中使用。 203 204**参数:** 205 206| 参数名 | 类型 | 必填 | 说明 | 207| ------- | ---------------- | ---- | --------------------------------------- | 208| field | string | 是 | 数据库表中的列名。</br>field为undefined或者null时,此次调用接口配置的谓词无效。 | 209| value | Array<[ValueType](js-apis-data-valuesBucket.md#valuetype)> | 是 | 以ValueType型数组形式指定的要匹配的值。 | 210 211**返回值:** 212 213| 类型 | 说明 | 214| ------------------------------------------- | -------------------------- | 215| [DataSharePredicates](#datasharepredicates) | 返回与指定字段匹配的谓词。 | 216 217**示例:** 218 219```ts 220let predicates = new dataSharePredicates.DataSharePredicates(); 221predicates.in("AGE", [18, 20]); 222```