查询表中的最后一个id

时间:2013-04-08 10:07:02

标签: ormlite query-builder

我需要获取表格中最后一条记录的ID。我试过了:

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

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

3 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:1)

在请求中向DBMS请求maxId更有效。原因DBMS不应该执行行的排序。 this answer

中有一个很好的例子
    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]);

答案 2 :(得分:1)

您可以简单地使用它:

ParticipantModel lastItem = participantDao.queryBuilder().orderBy("id", false).limit(1L).query().get(0);