如何使用QueryBuilder获取GreenDAO中列的Max值?

时间:2016-01-14 08:47:18

标签: android greendao

当谈到ORM时,我仍然生气,但我非常喜欢GREENDAO,因为它非常简单和速度。 我可以知道如何在GreenDao的表格中获取列的最大值。 假设我有一个带有id和post id的表,我想获得post id的最高值? 我已经尝试过使用原始sql构建器,但没办法

public void getMaxId(int postId)
   {
       return postsDao.queryBuilder().where(new WhereCondition.StringCondition(SELECT MAX(PostId) FROM POSTS).build());
   }

由于

2 个答案:

答案 0 :(得分:4)

这可能不是最优雅的解决方案,但它可以完成工作。

public Long getMaxId() {
    List<Posts> maxPostIdRow = _postsDao.queryBuilder().where(PostsDao.Properties.Postid.isNotNull()).orderDesc(PostsDao.Properties.Postid).limit(1).list();
    Long maxPostId = maxPostIdRow.get(0).getPostid();
    return maxPostId;
}

此处的策略是按所需字段对数据库表进行排序,仅抓取顶行,然后返回排序字段的值。

答案 1 :(得分:1)

你可以试试这个:

  Query query = collectionDao.queryBuilder().where(
            new WhereCondition.StringCondition("UPDATE_TIME=(SELECT MAX(PostId) FROM POSTS)")).build();