之前使用本地数据库都是用sqllite的,偶尔用一下LitePal,听人说Realm多么多么好使,但是我一直都没有去学习,今天有空去瞅了瞅,果然很不错。
它有以下几种特点:
1.易用:Ream 不是在SQLite基础上的ORM,它有自己的数据查询引擎。并且十分容易使用。
2.快速:由于它是完全重新开始开发的数据库实现,所以它比任何的ORM速度都快很多,甚至比SLite速度都要快。
3.跨平台:Realm 支持 iOS & OS X (Objective‑C & Swift) & Android。我们可以在这些平台上共享Realm数据库文件,并且上层逻辑可以不用任何改动的情况下实现移植。
4.高级:Ream支持加密,格式化查询,易于移植,支持JSON,流式api,数据变更通知等高级特性
5.可视化
1.如何使用?
在开始配置之前你需要确保你满足以下条件:
- 目前不支持
Android
以外的Java
- Android Studio >= 1.5.1
- 较新的Android SDK版本
- JDK version >=7.
- API 9(Android 2.3)以及之后的版本
1.在项目的build文件加上
classpath "io.realm:realm-gradle-plugin:4.3.1"
2.在app的build文件加上
apply plugin: 'realm-android'
3.在你的Application里面初始化realm
public class MyApplication extends Application{
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
//默认配置
RealmConfiguration configuration=new RealmConfiguration.Builder().build();
Realm.setDefaultConfiguration(configuration);
}
}
这时候会创建一个叫做 default.realm
的Realm文件,该文件就是realm的数据库文件,一般来说,这个文件位于/data/data/包名/files/。可以通过realm.getPath()
来获得该Realm的绝对路径,可以通过.assetFile(this,"realm file path in assets")方法指定初始化的数据库文件。Realm会把制定路径下的xxx.realm文件copy到Context.getFilesDir()目录中,以替换默认创建的空数据库文件。可以设置默认文件名,通过RealmConfiguration类进行配置。路径似乎改不了,需要看具体设备供应商的实现。
你也可以自定义设置
RealmConfiguration config = new RealmConfiguration.Builder()
.name("myrealm.realm") //文件名
.schemaVersion(0) //版本号
.build();
Realm realm = Realm.getInstance(config);
RealmConfiguration
支持的方法:
Builder.name
: 指定数据库的名称。如不指定默认名为default。Builder.schemaVersion
: 指定数据库的版本号。Builder.encryptionKey
: 指定数据库的密钥。Builder.migration
: 指定迁移操作的迁移类。Builder.deleteRealmIfMigrationNeeded
: 声明版本冲突时自动删除原数据库。Builder.inMemory
: 声明数据库只在内存中持久化。build
: 完成配置构建。
2.创建Model
创建一个Person类继承Rea