bmob根据时间排序分页查询多条数据
来源:互联网 发布:win10电脑mac地址查询 编辑:程序博客网 时间:2024/06/14 16:52
bmobObject默认有createdAt,updatedAt时间字段,保存这个bmobObject对象的生成时间和更新时间。
bmob开发文档的时间查询示例为:
如果想查询指定日期之前的数据,则可以使用
如果想查询指定日期之后的数据,则可以使用
addWhereLessThan
或者addWhereLessThanOrEqualTo
(包含当天)来查询。如果想查询指定日期之后的数据,则可以使用
addWhereGreaterThan
或addWhereGreaterThanOrEqualTo
(包含当天)来查询。 目前有一个需求要按照updatedAt从现在到从前的顺序查询多个数据,假设每次查询返回的最大数据量有限制为100条,查询返回的数据列表为ListA。每次查询则根据addWhereLessThan(ListA内元素中updatedAt最早的时间)进行查询。
问题的难点在于bmob后台保存的时间精确到微秒,而bmob数据库向api开发的时间精度到秒,如2016-01-05 20:20:18。
这样一来就会出现一种情况,假如在2016-01-05 20:20:17秒有90条数据,2016-01-05 20:20:18有20条数据,前端通过
BmobQuery<MyOrder> query = new BmobQuery<MyOrder>();String end ="2016-01-05 20:20:17";SimpleDateFormat sdf1 =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date1 =null;try{date1 = sdf1.parse(end);}catch(ParseException e){e.printStackTrace();}query .addWhereLessThanOrEqualTo("updatedAt",newBmobDate(date1));
程序执行后会得到2016-01-05 20:20:17 的90条数据以及2016-01-05 20:20:18的前10条数据,而后10条将不会被查询到。原因在于通过这种方式查询的时间精度是秒,下一次的查询的是早于2016-01-05 20:20:18的时间,而剩余的2016-01-05 20:20:18内毫秒级别精度的数据将不会被获得。
解决办法就是第二次查询通过获取 (2016-01-05 20:20:18 - 2016-01-05 20:20:19)的所有数据以及早于(2016-01-05 20:20:18)的所有数据,并与之前获得的数据进行比较,去除重复的。
private BmobQuery<MyOrder> getStateMoreQuery()
{
ArrayList<MyOrder> list = (ArrayList<MyOrder>)adapterMyOrder.getList();
MyOrder order = list.get(list.size() - 1);
BmobQuery<MyOrder> query = new BmobQuery<MyOrder>();
BmobQuery<MyOrder> q1 = new BmobQuery<MyOrder>();
BmobQuery<MyOrder> q2 = new BmobQuery<MyOrder>();
q1.addWhereLessThanOrEqualTo("updatedAt", ServerUtil.getBmobDateBigger1sec(order.getUpdatedAt())); //date.setTime(date.getTime() + 1000);
q1.addWhereGreaterThanOrEqualTo("updatedAt", ServerUtil.getBmobDate(order.getUpdatedAt()));
q2.addWhereLessThan("updatedAt", ServerUtil.getBmobDate(order.getUpdatedAt()));
List<BmobQuery<MyOrder>> querys = new ArrayList<BmobQuery<MyOrder>>();
querys.add(q1);
querys.add(q2);
query.or(querys);
return query;
}
1 0
- bmob根据时间排序分页查询多条数据
- oracle 根据更新时间不同查询多条相同数据
- Bmob(wechatApp)--查询数据
- 【Bmob】数据查询
- sql根据时间查询数据
- MongoDB数据查询,分页,排序
- Hibernate中的createQuery查询一条数据、多条数据、分页查询数据
- SQL语句根据具体时间查询数据
- mysql根据时间戳查询数据
- 根据不同的时间日期查询数据
- [ mysql ] 根据时间查询有效数据
- Oracle中根据时间范围查询数据
- Bmob实战之分页获取数据
- Linq to XML 排序,分页,多节点查询数据
- SQL 查询第N条数据 分页查询
- Oracle分页查询排序数据重复问题
- Oracle分页查询排序数据重复问题
- Bmob查询获取内部类的数据
- 用runtime 解决UIButton 重复点击问题
- navbar-left vs pull-left
- 更改图片背景颜色
- 23种设计模式
- List 拷贝subList
- bmob根据时间排序分页查询多条数据
- 2016年1月7日
- PHP利用token防止表单重复提交
- Linux tcpdump命令详解
- 新的一年展望
- 动态创建二维数组
- Hadoop集群之Hive安装配置
- Swift入门———循环
- 代码比较软件Beyond Compare