添加依赖
在整个项目的build.gradle里添加
buildscript {
ext.objectboxVersion = '2.3.4'
repositories {
jcenter()
}
dependencies {
// Android Gradle Plugin 3.0.0 or later supported
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
}
}
在app的build.gradle里添加
如果是kotlin
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt' // Required for annotation processing.
apply plugin: 'io.objectbox' // Apply last.
如果是java
apply plugin: 'com.android.application'
apply plugin: 'io.objectbox' // Apply last.
好了,依赖加完了
添加初始化代码
添加初始化代码:
kotlin, 可以把这个类放到自定义的app中,也可以单独一个类
object ObjectBox {
lateinit var boxStore: BoxStore
private set
fun init(context: Context) {
boxStore = MyObjectBox.builder()
.androidContext(context.applicationContext)
.build()
}
}
java
public class ObjectBox {
private static BoxStore boxStore;
public static void init(Context context) {
boxStore = MyObjectBox.builder()
.androidContext(context.getApplicationContext())
.build();
}
public static BoxStore get() { return boxStore; }
}
这里的
MyObjectBox
是编译自动生成的。如果编译之后没有生成,可以先按照下面的步骤添加Entity
类,然后再编译,这样应该就可以生成了。
然后在自定义的application中调用初始化
kotlin:
class ExampleApp : Application() {
override fun onCreate() {
super.onCreate()
ObjectBox.init(this)
}
}
java:
public class ExampleApp extends Application {
@Override
public void onCreate() {
super.onCreate();
ObjectBox.init(this);
}
}
接下来就可以使用了:
val userBox: Box<User> = ObjectBox.boxStore.boxFor()
开始使用
添加entity
// User.kt
@Entity
data class User(
@Id var id: Long = 0,
var name: String? = null
)
几个注意的点:
- 类上面可以打
@Entity
,如果是基类则打@BaseEntity
。 - 一定要有一个
@Id
,类型为Long
的属性,用于自增属性。 - kotlin中的data class一定要有默认值,不然可能会找不到默认的构造方法。
- 如果某个字段不想序列化到数据库中可以打上:
@Transient
标签,从kotlin里或者objectBox中导入的都可以。
增加:
App.ObjectBox.boxStore.boxFor<Project>().put(project)
查找:
App.ObjectBox.boxStore.boxFor<Mark>()
.query()
.equal(Mark_.projectId, projectId)
.build()
.find()
查找并且删除:
val box = App.ObjectBox.boxStore.boxFor<Mark>()
box.query().equal(Mark_.projectId, projectId).build().remove()
query的参考文档:https://docs.objectbox.io/queries
网友评论