ObjectBox使用记录
学习链接: https://blog.csdn.net/vxiaocai/article/details/78711190
引入
1.project的gradle中修改:
buildscript {
repositories {
google()
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath "io.objectbox:objectbox-gradle-plugin:2.3.4"
}
}
-
module或者app中引入,需要gradle中最后添加
apply plugin: 'io.objectbox'
3.如果想要查看数据库。module或者app的gradle中添加
`dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
/*为了电脑查看数据*/
debugImplementation "io.objectbox:objectbox-android-objectbrowser:2.3.4"
releaseImplementation "io.objectbox:objectbox-android:2.3.4"
}
apply plugin: 'io.objectbox'`
然后application初始化的时候需要打开调试:
`
private BoxStore boxStore;
private void initObjectBox() {
//第一次没运行之前,MyObjectBox默认会有报错提示,可以忽略。创建实体类, make之后报错就会不提示
boxStore = MyObjectBox.builder().androidContext(this).build();
if (BuildConfig.DEBUG) {//开启浏览器访问ObjectBox
boolean started = new AndroidObjectBrowser(boxStore).start(this);
Log.i("ObjectBrowser", "Started: " + started);
}
DataManager.getInstance().init(this);//数据库统一操作管理类初始化
}
`
然后可打开链接: http://localhost:8090/index.html 查看
备注:如果访问不到那么程序安装后,打开命令行 输入以下命令 adb forward tcp:8090 tcp:8090
再次尝试打开链接
使用
数据库使用
- application初始化 BoxStore boxStore = MyObjectBox.builder().androidContext(this).build();
- 添加:boxStore.boxFor(NewUserEntity.class).put(对象实例);
- 查询:SqlKeyValue sqlKeyValue = beanBox.query().equal(SqlKeyValue_.sqlKey, key).build().findFirst();
- 删除:beanBox.query().equal(SqlKeyValue_.sqlKey, key).build().remove();
- 更改:先查询到对象,修改属性,再添加
数据库的升级
- 字段的添加或者减少。直接修改对象属性如添加public String code; 注意属性为public或者(provide需要set和get)
- 字段属性的修改。1.先添加@Uid,运行看报错如:
error: [ObjectBox] UID operations for property "MyEntity.year": [Rename] apply the current UID using @Uid(6707341922395832766L) - [Change/reset] apply a new UID using @Uid(9204131405652381067L)
在字段前添加@Uid(9204131405652381067L)
3.对象修改:同字段属性修改
4.数据升级后,保留原数据。
问题记录
引入不成功
- 检查project和module中的gradle是否添加
- 定义@Entity对象
- rebuild project
数据升级后,保留原数据
- 添加、删除 对象字段=数据库字段;objectbox自动升级数据库并且保留数据
- 字段的属性修改需要添加@Uid,以前保存的字段:注意可能为null