我需要获取表格中最后一条记录的ID。我试过了:
Dao<ParticipantModel,Integer> participantDao = getHelper().getParticipantsDao();
participant = participantDao.query(participantDao.queryBuilder()
.orderBy("id", false).prepare()).get(1);
我不确定如何使用QueryBuilder
来获取我正在寻找的结果。提前感谢任何想法。
答案 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);