AVOS Cloud Android开发指南
模块与SDK包
AVOS Cloud基本存储模块
- avoscloud- 版本号.jar
- android-async-http-1.4.4-fix.jar
- fastjson.jar
- httpmime-4.2.4.jar
AVOS Cloud 推送模块
- AVOS Cloud 基础存储模块
- avospush- 版本号.jar
AVOS Cloud 统计模块
- AVOS Cloud 基础存储模块
- avosstatistics- 版本号.jar
AVOS Cloud SNS 模块
- AVOS Cloud 基础存储模块
- weibo.sdk.android.sso.jar
- qq.sdk.1.6.1.jar
简介
AVOSCloud提供了一个完整的后端解决方案
应用程序
在 AVOS Cloud 平台注册后,您创建的每个应用程序都有其自己的应用程序 ID 和 Key, 在您的应用程序中将凭此 ID 和 Key 使用 AVOS Cloud SDK。您的账户可以创建容纳多个应用程序,这是非常方便和有用的。即使您只有一个应用程序,也可以使用不同的版本进行测试和生产。
对象
AVOS Cloud存储的数据是建立在AVObject
基础上,每个AVObject
包含键(key)-值(value)对的JSON兼容的数据。
键必须是字母、数字的字符串,值可以是字符串、数字、布尔值、JSON数组和AVObject对象等。每个AVObject
有一个类名,你可以用它来区分各种不同的数据。
保存对象
1 | AVObject myObj = new AVObject("MyObject"); |
检索对象
使用AVQuery
通过ObjectID
检索到一个完整的AVObject
1 | AVQuery<AVObject> query = new AVQuery<AVObject>("MyObject"); |
更新对象
获取AVObject对象,然后进行修改值后保存数据
1 | AVQuery<AVObject> query = new AVQuery<AVObject>("MyObject"); |
计数器
1 | myObj.increment("value1"); |
更新后获取最新值
设置fetchWhenSave
属性为true
会使更新后,AVObject获得最新值
1 | myObj.setFetchWhenSave(true); |
删除对象
从服务器删除对象
1 | myObj.deleteInBackground(); |
关联数据
对象可以与其他对象相联系,就像数据库中的主外键关系一样,数据表A的某一个字段是数据表B的外键,只有表B中存在的数据才插入进A中的字段。
1 | AVObject myWeibo = new AVObject("Post"); |
默认情况下,获取一个对象的时候,关联的AVObject
不会被获取,这些对象的值无法获取,直到调用fetch
1 | myConment.getAVObject("post").fetchIfNeededInBackground(new GetCallback<AVObject>() { |
使用AVRelation
来建模多对多关系。
比如一个User
喜欢很多Post
,可以用getRelation
方法保存一个用户喜欢的用户的Post集合。
1 | AVUser user = AVUser.getCurrentUser(); |
默认情况,处于关系的对象集合不会被下载,可以通过getQuery
方法返回的AVQuery
对象,使用它的findInBackground方法来获取Post链表
1 | relation.getQuery().findInBackground(new FindCallback<AVObject>(){ |
数据类型
支持的数据类型有String
、Int
、Boolean
、AVObject
,同时支持java.util.Date
、byte[]
、JSONObject
、JSONArray
数据类型。
查询
基本查询
先创建一个AVQuery
对象,然后通过添加不同的条件,使用findInBackground
方法结合FindCallback
回调类来查询与条件匹配的AVObject数据,使用whereEqualTo
方法来添加条件值
1 | AVQuery<AVObject> query = new AVQuery<AVObject>("MyObject"); |
查询条件
- whereNotEqualTo() 不等于
- setLimit() 限制结果的个数
- setSkip() 忽略多少个
- orderByAscending() 升序排列
- orderByDescending() 降序排列
- whereLessThan() 小于
- whereLessThanOrEqualTo() 小于等于
- whereGreaterThan() 大于
- whereGreaterThanOrEqualTo() 大于等于
想查询匹配几个不同值的数据,如:要查询”steve”、”chard”、”jack”三个人的成绩,可以使用whereContainedIn
方法来实现,排除可以使用whereNotContainedIn
方法
1 | String[] names = {"steve","chard","jack"}; |
使用whereMatches
方法可以使用任何正确的正则表达式来检索匹配的值
1 | // 比较name字段的值是以大写字母和数字开头 |
查询字符串中包含“XX“内容,可用如下方法:
1 | // 查询playerName字段的值中包含“ste“字的数据 |
数组查询
如果key对应的值是一个数组,可以查询key的数组包含了数字2的所有对象
1 | query.whereEqualTo("arrayKey",2); |
同样,你可以查询出 Key 的数组同时包含了 2,3 和 4 的所有对象:
1 | //查找出所有arrayKey对应的数组同时包含了数字2,3,4的所有对象。 |
字符串的查询
使用 whereStartsWith 方法来限制字符串的值以另一个字符串开头。非常类似 MySQL 的 LIKE 查询,这样的查询会走索引,因此对于大数据集也一样高效:
1 | //查找出所有username以avos开头的用户 |
查询对象个数
query使用count替代find可以统计多少个对象满足查询
1 | query.countInBackgroud(new CountCallback(){ |