5

我需要获取表中最后一条记录的 id。我努力了:

Dao<ParticipantModel,Integer> participantDao  = getHelper().getParticipantsDao();
        participant = participantDao.query(participantDao.queryBuilder()
                 .orderBy("id", false).prepare()).get(1);

我不确定如何使用QueryBuilder来获得我正在寻找的结果。提前感谢您的任何想法。

4

3 回答 3

8

在我的应用程序中,我只需将 limit(int) 添加到准备好的查询中,如下所示:

Dao<ParticipantModel,Integer> participantDao  = getHelper().getParticipantsDao();
    participant = participantDao.query(participantDao.queryBuilder()
         .orderBy("id", false).limit(1L).prepare());
于 2013-04-08T10:42:02.363 回答
1

在请求中向 DBMS 询问 maxId 更有效。因为 DBMS 不应该对行进行排序。这个答案中有一个很好的例子

    QueryBuilder<MODEL, ID> qb = dao.queryBuilder().selectRaw("max(id)");
    String[] columns = new String[0];
    try {
        GenericRawResults<String[]> results = dao.queryRaw(qb.prepareStatementString());
        columns = results.getFirstResult();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    if (columns.length == 0) {
        // NOTE: there are not any rows in table
        return 0;
    }
    return Integer.parseInt(columns[0]);
于 2015-01-14T18:38:40.063 回答
1

您可以简单地使用它:

ParticipantModel lastItem = participantDao.queryBuilder().orderBy("id", false).limit(1L).query().get(0);
于 2018-05-06T13:40:25.713 回答