文章目录
Realm(Java)数据库使用文档(目录)
All fetches (including queries) are lazy in Realm, and the data is never copied.
所有获取(包括查询)在Realm中都是惰性的,并且永远不会复制数据。
Realm的查询引擎使用 Fluent interface 构造多子句查询。
public class User extends RealmObject {
@PrimaryKey
private String name;
private int age;
@Ignore
private int sessionId;
// Standard getters & setters generated by your IDE…
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public int getSessionId() { return sessionId; }
public void setSessionId(int sessionId) { this.sessionId = sessionId; }
}
要查找所有名为John或Peter的用户,请输入:
// Build the query looking at all users:
RealmQuery<User> query = realm.where(User.class);
// Add query conditions:
query.equalTo("name", "John");
query.or().equalTo("name", "Peter");
// Execute the query:
RealmResults<User> result1 = query.findAll();
// Or alternatively do the same all at once (the "Fluent interface"):
RealmResults<User> result2 = realm.where(User.class)
.equalTo("name", "John")
.or()
.equalTo("name", "Peter")
.findAll();
这为您提供了RealmResults类的新实例,其中包含名称为John或Peter的用户。
方法findAll
执行查询; [RealmQuery] []包含一整套findAll
方法:
findAll
查找满足查询条件的所有对象findAllAsync
在后台线程上异步运行findFirst
(和findFirstAsync
)查找符合查询条件的第一个对象
有关完整的详细信息,请深入研究RealmQuery API参考。
查询返回对匹配对象的引用列表,因此您可以直接使用与查询匹配的原始对象。RealmResults从AbstractList继承,并且行为类似。例如,RealmResults是有序的,您可以通过索引访问单个对象。如果查询不匹配,则返回的RealmResults对象将是size(0)的列表(不为null)。
如果要修改或删除RealmResults集中的对象,则必须在写事务中进行。
请注意,您还可以查询关系:阅读有关链接查询的信息。
8.1 筛选
where方法通过指定model来启动RealmQuery。过滤条件是由谓词方法指定的,大多数谓词方法都具有不言自明的名称(例如equalTo)。谓词始终将字段名称作为其第一个参数。
并非所有谓词都可用于所有字段类型。有关详细信息,请查阅[RealmQuery] [] API参考。
对于所有数据类型,您具有以下谓词:
equalTo
notEqualTo
in
要将字段与值列表匹配,请使用in
。例如,要查找名称“Jill”\“ William”或“ Trillian”,可以使用in(“name”,new String [] {“ Jill” ,“ William”,“ Trillian”})
。 in谓词适用于字符串,二进制数据和数字字段(包括日期)。
包括日期在内的数值数据类型允许以下附加谓词:
between
(包括both和points等,是一个有界区间)greaterThan
lessThan
greaterThanOrEqualTo
lessThanOrEqualTo
字符串字段允许这些其他谓词:
contains
beginsWith
endsWith
like
所有四个字符串谓词都有一个可选的第三个参数来控制区分大小写:Case.INSENSITIVE和Case.SENSITIVE。默认值为Case.SENSITIVE。
谓词like执行glob样式的通配符匹配。匹配模式由字符和一个或多个通配符组成: