Cursor
Cursor 提供了用于遍历类的实例的方法。
类定义
public class Cursor<T> implements Iterable<T>, Iterator<T>, java.io.Closeable
{
public enum Operation
{
LessThan,
LessOrEquals,
Equals,
GreaterOrEquals,
GreaterThan,
Overlaps,
Contains,
ExactMatch,
BestMatch,
PrefixMatch,
NextMatch,
Neighbourhood,
StrictEquals,
IsPrefixOf,
ContainsAll,
ContainsAny
};
public Cursor(Connection con, Class cls, String indexName)
{
...
}
public Cursor(Connection con, Class cls)
{
...
}
public boolean search(Operation op, Object... value)
{
...
}
public boolean search(Operation op, long value)
{
...
}
public boolean search(Operation op, double value)
{
...
}
public boolean search(Operation op, String value)
{
...
}
public T find(Object... value)
{
...
}
public T find(long value)
{
...
}
public T find(String value)
{
...
}
public boolean hasPrev()
{
...
}
public boolean hasNext()
{
...
}
public boolean moveNext()
{
...
}
public boolean movePrev()
{
...
}
public T skip(int offset)
{
...
}
public T getCurrent()
{
...
}
public T next()
{
...
}
public T prev()
{
...
}
public T first()
{
...
}
public T last()
{
...
}
public void remove()
{
...
}
public void update()
{
...
}
public void checkpoint()
{
...
}
public long getAutoId()
{
...
}
public void close()
{
...
}
public Iterator<T> iterator()
{
...
}
};
方法
Cursor
- public Cursor(Connection con, Class cls, String indexName) :构建一个游标来遍历指定类的实例。(不考虑继承关系)
- 参数:
- con:数据库连接
- cls:迭代类
- indexName:用于迭代和搜索的索引名称
- 参数:
- public Cursor(Connection con, Class cls) :为具有列表或自动 ID 索引(持久化注解的 list() 或 autoid() 属性)的类构建游标。
- 参数:
- con:数据库连接
- cls:迭代类
- 参数:
search
- public boolean search(Operation op, Object... value)
- public boolean search(Operation op, long value)
- public boolean search(Operation op, double value)
- public boolean search(Operation op, String value)
执行指定的搜索操作 op。参数:
- op:从枚举 Operation 中要执行的操作
- value:要搜索的键值,其类型为对象、长整型、双精度型或字符串
此方法可用于任何类型的索引;支持的搜索操作取决于索引类型:
- 哈希表:等于
- B 树:小于、小于等于、等于、大于、大于等于
- R 树:等于、重叠、包含、邻域
- 帕特里夏树:等于、精确匹配、最佳匹配、前缀匹配、下一个匹配
- 三元组树:包含
此方法将游标定位在匹配指定搜索条件的第一个元素上。向前或向后移动以定位满足此条件的所有其他元素。
例如,在LessThan搜索中向后移动,在GreaterOrEquals搜索中向前移动。
find
- public T find(Object... value)
- public T find(long value)
- public T find(String value)
在唯一索引上执行精确匹配搜索。如果找到具有指定键值的对象,则返回该对象;否则返回 null。参数:
- value:要搜索的长整型或字符串类型的键值对象
这种方法等同于
cursor.search(Cursor.Equals, value);
T result = cursor.next();
hasPrev
public boolean hasPrev():检查是否有之前的记录
hasNext
public boolean hasNext():检查是否有下一个结果
moveNext
public boolean moveNext():将游标位置向前移动,但不获取当前对象。此方法允许在不获取对象的情况下遍历游标。可以使用 getCurrent() 方法显式获取所需对象。如果当前元素不是最后一个元素,则返回 true,否则返回 false。
movePrev
public boolean movePrev():将游标位置向后移动而不获取当前对象。此方法允许在不获取对象的情况下遍历游标。可以使用 getCurrent() 方法显式获取所需对象。如果当前元素不是第一个元素,则返回 true,否则返回 false。
skip
public T skip(int offset):跳过指定数量的结果。返回游标中指定位置的对象,如果无法到达该位置则返回 null。参数:
- offset:如果是正数则向前移动,如果是负数则向后移动(零值不被接受)
getCurrent
public T getCurrent():获取当前对象。此方法仅应与 moveNext() 或 movePrev() 方法一起使用,作为 next() 或 prev() 的替代方法
next
public T next():向前移动。返回结果集中的下一个对象,如果没有更多对象则返回空值
prev
public T prev():向后移动。返回结果集中的前一个对象,如果没有更多对象则返回空值
first
public T first():获取结果集中的第一个对象。如果结果集为空,则返回结果集中的第一个对象或 null
last
public T last():获取结果集中的最后一个对象。如果结果集为空,则返回结果集中的最后一个对象或 null
remove
public void remove():移除当前对象;即先前由 first()、last()、next()、prev() 或 skip() 方法返回的对象
update
public void update():更新当前对象;即先前由 first()、last()、next()、prev() 或 skip() 方法返回的对象。
checkpoint
public boolean checkpoint():检查当前对象;即为先前由 first()、last()、next()、prev() 或 skip() 方法返回的已更新对象插入索引。如果存在 MVCC 冲突,则返回 false。
getAutoId
public long getAutoId():获取当前对象的 AUTOID(如果该对象有 AUTOID 的话)。返回由 first()、last()、next()、prev() 或 skip() 方法先前返回的对象的 AUTOID。
close
public void close():关闭游标
iterator
public Iterator<T> iterator():返回迭代器 |