ORMLite теперь поддерживает методы next()
, previous()
, moveRelative(offset)
, ... для CloseableIterator
класса .Это должно позволить вам перемещать базовый Cursor
объект по желанию.
Он также поддерживает следующие методы курсора DAO:
dao.mapSelectStarRow(databaseResults)
Returnпоследняя строка из базы данных является результатом запроса к select *
.При этом вы можете изменить местоположение курсора (например) и затем получить текущий объект. dao.getSelectStarRowMapper()
Предоставляет картограф, который можно использовать для сопоставления объекта за пределами Дао.
Когда вы создаете собственный запрос с помощью ORMLite , вы используете объект QueryBuilder
.queryBuilder.prepare()
возвращает PreparedQuery
, который используется различными методами в DAO.Вы можете позвонить dao.iterator(preparedQuery)
, который вернет CloseableIterator
, который используется для перебора результатов.Существует iterator.getRawResults()
для доступа к классу DatabaseResults
.Под Android это может быть приведено к AndroidDatabaseResults
, у которого есть метод getCursor()
для возврата Android Cursor
.
Что-то вроде следующего кода:
// build your query
QueryBuilder<Foo, String> qb = fooDao.queryBuilder();
qb.where()...;
// when you are done, prepare your query and build an iterator
CloseableIterator<Foo> iterator = dao.iterator(qb.prepare());
try {
// get the raw results which can be cast under Android
AndroidDatabaseResults results =
(AndroidDatabaseResults)iterator.getRawResults();
Cursor cursor = results.getRawCursor();
...
} finally {
iterator.closeQuietly();
}
Это немного сложно, но вам определенно приходится заглядывать за вейл, чтобы добраться до этого объекта, который скрыт классами абстракции базы данных.