nt : 求结果集的记录数量。
findAll(): 返回结果集所有字段,返回值为RealmResults队列
findAllSorted() : 排序返回结果集所有字段,返回值为RealmResults队列
between(), greaterThan(),lessThan(), greaterThanOrEqualTo() & lessThanOrEqualTo()
equalTo() & notEqualTo()
contains(), beginsWith() & endsWith()
isNull() & isNotNull()
isEmpty()& isNotEmpty()
8. 修改数据
mRealm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) {
修改也是需要在事务中操作。使用查询语句得到数据,然后将内容改了即可。
9. 删除数据
(1)使用deleteFromRealm()
(2)使用deleteFromRealm(int index)
mRealm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { userList.deleteFromRealm(0); } });
(3)其他方法
userList.deleteFirstFromRealm();
10. 异步任务注意点
最后在销毁Activity或Fragment时,要取消掉异步任务
@Override protected void onDestroy() { super.onDestroy(); if (deleteTask!=null&&!addTask.isCancelled()){ deleteTask.cancel(); } }
11. 其他常见操作
API:RealmObjectSchema
(1)取消id必填
personSchema.setNullable("id", true):
(2)移除id字段
personSchema.removeField("id");
(3)重命名
personSchema..renameField("id", "userId");
API:DynamicRealmObject
(4)获取id
String id = obj.getString("id");
(5)为字段设置值
obj.setString("name", "Gavin"); obj.setInt("id", 1); obj.setLong("id", 1);
12. 数据库版本升级
??当数据结构发生变化是,需要升级数据库。对于Realm来说,数据库升级就是迁移操作,把原来的数据库迁移到新结构的数据库
??例1:User类发生变化,移除age,新增个@Required的id字段。
User版本:version 0
String name;
int age;
User版本:version 1
@Required
String id; String name;
创建迁移类CustomMigration,需要实现RealmMigration接口。执行版本升级时的处理:
使用Builder.migration升级数据库,将版本号改为1(原版本号:0)。当Realm发现新旧版本号不一致时,会自动使用该迁移类完成迁移操作。
RealmConfiguration config = new RealmConfiguration.Builder() .name("myrealm.realm")
例2:加入Dog类,User中加入Dog集合。
User版本:version 1
@Required
String id; String name;
User版本:version 2
@Required private String id; private String name; private RealmList<Dog> dogs;
Dog类
public class Dog extends RealmObject { private String name; private int age; }
在迁移类CustomMigration中,继续添加处理方法。
(oldVersion == 1 && newVersion == 2) {