初探Realm的基本使用
Realm的官方说明:https://realm.io/docs/java/latest/#installation
一、添加插件
-
第一步:添加classpath “io.realm:realm-gradle-plugin:2.3.1”
-
第二步:添加apply plugin: ‘realm-android’
二、配置Realm数据库
在自定义的Aplication中对Realm进行配置。
/**
* Author LYJ
* Created on 2017/2/9.
* Time 11:35
*/
public class App extends Application{
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);//初始化Realm
RealmConfiguration configuration = new RealmConfiguration.Builder()
.name("mineRealm.realm")//设置数据库名称
.schemaVersion(0)//设置版本号
.build();
Realm.setDefaultConfiguration(configuration);//设置配置
}
}
三、创建Person数据表
创建Person类并继承RealmObject。使用@PrimaryKey修饰的变量为主键。
/**
* Author LYJ
* Created on 2017/2/9.
* Time 11:49
* 这就相当于一张表,Person表
*/
public class Person extends RealmObject{
@PrimaryKey
private String id;//主键ID
private String name;//姓名
private int age;//年龄
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
}
四、在Activity中获取和关闭Realm
- 获取Realm对象
realm = Realm.getDefaultInstance();
- 关闭Realm
/**
* 销毁界面
*/
@Override
protected void onDestroy() {
realm.close();
super.onDestroy();
}
五、增加数据
使用事务向Person表中增加数据。在Realm中主键不能自增。这里将使用UUID来为Person表设置主键的ID。
Person person = new Person();//要插入的数据
person.setId(UUID.randomUUID().toString());//设置ID
person.setName(inputName);//设置插入数据的名字
person.setAge(Integer.parseInt(inputAge.trim()));//设置插入数据的年龄
realm.beginTransaction();//开启事务
realm.copyToRealmOrUpdate(person);//传入对象
realm.commitTransaction();//提交事务
【向Person数据表中添加3条数据。】
【通过上图中的操作,成功向数据库中插入了3条数据。】
六、修改数据
使用事务修改Person表中的数据。这里先使用条件查询,获取到查询结果后会得到一个Person对象,该对象就对应着表中的一条数据。随后直接对对象的修改在提交事务,就可以将数据更新了。
Person result = selectResult(inputName);//查询结果
realm.beginTransaction();//开启事务
result.setAge(Integer.parseInt(inputAge.trim()));//设置年龄
realm.commitTransaction();//提交事务
【将Person表中名为Make的年龄改为21。】
【成功的将Make的年龄改为了21。】
七、删除数据
使用事务删除Person表中的数据
Person result = selectResult(inputName);//查询结果
realm.beginTransaction();//开启事务
result.deleteFromRealm();//删除数据
realm.commitTransaction();//提交事务
【因为Make的存在影响了Jack与Rose的感情,所以Make决定离开】
【从此Jake与Rose幸福的生活在了一起】
八、查询数据
- 全部查询
RealmResults<Person> results = realm.where(Person.class).findAll();//查询结果
List<Person> personList = realm.copyFromRealm(results);
- 条件查询
/**
* 条件查询
* @param name
*/
private Person selectResult(String name){
//条件查询
Person person = realm.where(Person.class).equalTo("name",name).findFirst();
return person;//查询结果
}