在上一章节我们讲了数据库数据表的一些基本操作。如query、upsert、delete和calculateQuery。这一章节主要来讲解各种查询条件操作。如 查询班级年龄大于30的同学。查询班级内男、女的人数等等。
查询条件解释
谓词,用来代替或者展示其客体性质、特征或者客体之间关系的词项。
这些查询条件在端云一体中解释中叫做谓词。云数据库中提供丰富的谓词查询来构建查询条件。根据谓词查询方法构造自己的
DatabaseQuery对象。
查询条件谓词一览
| 关键字 | 说明 |
|---|---|
| equalTo | 表示等于的条件判断,用于查询中筛选出与指定值相等的数据 |
| notEqualTo | 表示不等于的条件判断,筛选出与指定值不相等的数据 |
| beginsWith | 表示以某个值开头,用于查询开头匹配特定字符串的数据 |
| endsWith | 表示以某个值结尾,用于查询结尾匹配特定字符串的数据 |
| contains | 表示包含某个值,用于查询包含特定字符串的数据 |
| greaterThan | 表示大于,用于数值类型数据的比较,筛选出大于指定值的数据 |
| greaterThanOrEqualTo | 表示大于或等于,筛选出大于或等于指定值的数据 |
| lessThan | 表示小于,用于数值类型数据的比较,筛选出小于指定值的数据 |
| lessThanOrEqualTo | 表示小于或等于,筛选出小于或等于指定值的数据 |
| in | 用于判断某个值是否在指定的集合内,常用于查询符合多个值中某一个的数据 |
| isNull | 用于判断某个字段是否为空值 |
| isNotNull | 用于判断某个字段是否不为空值 |
| orderByAsc | 按升序排列,用于对查询结果按照指定字段进行从小到大的排序 |
| orderByDesc | 按降序排列,用于对查询结果按照指定字段进行从大到小的排序 |
| limit | 限制查询结果返回的数量 |
| beginGroup | 开始一个逻辑分组,用于将多个条件组合在一起作为一个逻辑单元 |
| endGroup | 结束一个逻辑分组 |
| or | 逻辑或,用于连接多个条件,只要其中一个条件满足则整个逻辑表达式为真 |
| and | 逻辑与,用于连接多个条件,只有所有条件都满足时整个逻辑表达式才为真 |
谓词使用示例
equalTo 查询id为20的数据
this.condition.equalTo("id", 20)notEqualTo 查询id不等于20的数据
this.condition.notEqualTo("id", 20)beginsWith 查询name字段以b开头的数据
this.condition.beginsWith("name", "b")endsWith 查询name字段以k结尾的数据
this.condition.endsWith("name", "k")contains 查询name字段包含k的数据
this.condition.contains("name", "k")greaterThan 查询price字段大于30的数据
this.condition.greaterThan("price", 30)greaterThanOrEqualTo 查询price字段大于或者等于30的数据
this.condition.greaterThanOrEqualTo("price", 30)lessThan 查询price字段小于30的数据
this.condition.lessThan("price", 30)lessThanOrEqualTo 查询price字段小于或者等于30的数据
this.condition.lessThanOrEqualTo("price", 30)in 查询name字段包含在["book","aaaa","bbbb"]的中数据
this.condition.in("name", ["book", "aaaa", "bbbb"])isNull 查询name字段是否为null
this.condition.isNull("name")isNotNull 查询name字段是否非null
this.condition.isNotNull("name")orderByAsc 根据id,进行升序
this.condition.orderByAsc("id")orderByDesc 根据id,进行降序
this.condition.orderByDesc("id")limit 查询2条数据,从第1条开始
this.condition.limit(2, 1)or 逻辑或,查询name=book 或者 price>30的数据
this.condition.equalTo("name", "book").or().greaterThan('price', 30)and 逻辑与,查询name=book123 并且 price>30的数据
this.condition.equalTo("name", "book123").and().greaterThan('price', 30)beginGroup 和 endGroup 表示一对逻辑分组
// 条件1: name=book并且price>30
// 条件2: id=20或者price>30
// 需求: 查询 条件1 和 条件2 同时满足的数据
this.condition
.beginGroup()
.equalTo('name', 30)
.and()
.greaterThan('price', 30)
.endGroup()
.and()
.beginGroup()
.equalTo('id', 20)
.or()
.greaterThan('price', 30)
.endGroup();加强
上面的谓词,也是根据实际语义搭配一起使用。比如:查询name=book的前2条数据
总结
本章主要介绍了HarmonyOSNext端云一体化中的数据库查询条件操作:
介绍了查询条件中的谓词概念,它用于展示或描述数据的性质、特征或关系
-
详细列举了常用的查询谓词,包括:
- 比较类:equalTo、notEqualTo、greaterThan、lessThan等
- 字符串匹配:beginsWith、endsWith、contains
- 空值判断:isNull、isNotNull
- 集合操作:in
- 排序限制:orderByAsc、orderByDesc、limit
- 逻辑组合:and、or、beginGroup、endGroup
通过具体示例展示了各种谓词的使用方法,包括基本查询和复杂的组合查询
说明了谓词可以根据实际需求灵活组合使用,以实现更复杂的查询功能
如果你兴趣想要了解更多的鸿蒙应用开发细节和最新资讯,欢迎在评论区留言或者私信或者看我个人信息,可以加入技术交流群。