一、引入
在项目build文件中
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.2'
classpath "io.objectbox:objectbox-gradle-plugin:2.9.1"
}
在app的build文件中
apply plugin: 'io.objectbox'
设置so库防止LinkageError崩溃
ndk {
//设置支持的SO库架构
abiFilters 'armeabi', "armeabi-v7a"
}
可选:Kotlin
对于使用Kotlin的Android项目,请务必添加kotlin-kapt:
apply plugin: 'kotlin-android' // if using Kotlin
apply plugin: 'kotlin-kapt' // if using Kotlin
apply plugin: 'io.objectbox' // apply last
可选:高级设置
ObjectBox插件使用合理的默认值并自动检测大多数配置。 但是,如果需要,您可以使用高级设置选项配置模型文件路径,MyObjectBox包,启用使用高级设置选项。
Advanced Setup - ObjectBox Docs
二、实体类
@Entity
public class User {
@Id
public long id;
@Index
public String accountNumber;
public String name;
public String password;
}
@Entity批注将Java类User标识为可持久化实体(数据库表名)。
@Id实体必须具有一个long类型的属性才能有效地获取或引用对象。自增id
@Index: 因为在ObjectBox中主键是必须设置为long类型的id, 当我们业务上需要另外主键时, 可以再标注@Index
@NameInDb: 字段在数据库中的命名
@Transient: 忽略字段, 不在表中生成
@ToOne:做一对一的关联注解,例如示例中表示一张学生表(Student)关联一张班级表(Class),此外还有一对多,多对多的关联,例如Class的示例:
@Entity
public class Class{
@Id
long id;
@Backlink(to = "classToOne")
public ToMany<Student> studentEntitys;
}
@ToMany:做一对多的关联注解,如示例中表示一张班级表(Class)关联多张学生表(Student)
@Backlink:表示反向关联
需要注意的是:默认情况下,id是会被objectbox管理的,也就是自增id,如果你想手动管理id需要在注解的时候加上@Id(assignable = true)即可。当你在自己管理id的时候如果超过long的最大值,objectbox 会报错。id=0的表示此对象未被持久化,id的值不能为负数。
三、初始化
MyObjectBox类是objectbox自动生成的,需要通过Build> Make project操作来生成,在此之前,