Gra*_*ray 65
ORMLite现在支持next(),previous(),moveRelative(offset),...的方法CloseableIterator类.这应该允许您随意移动底层Cursor对象.
它还支持以下DAO Cursor方法:
dao.mapSelectStarRow(databaseResults)从查询中返回数据库结果中的最新行select *.使用此功能,您可以更改光标位置(例如),然后获取当前对象.dao.getSelectStarRowMapper() 提供一个映射器,可用于映射Dao外部的对象.使用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();
}
Run Code Online (Sandbox Code Playgroud)
这有点复杂,但你肯定要在谷后面找到这个被数据库抽象类隐藏的对象.