ObjectBox的增删改查

阎弘雅
2023-12-01

之前一直用GreenDao来做数据缓存,无意中在GreenDao的官网上推出一款更易于开发的数据库——ObjectBox。刚好用一个项目做实战。

配置

1.在项目下的build.gradle配置


buildscript {

    ext.objectboxVersion = '2.8.1'
    
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        ...
        classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
    }
}

2.在app.gradle配置

apply plugin: 'io.objectbox'
android {
    //使用objectbox必须要加这段(jdk1.8),不然会初始化的时候会报错(部分手机)
    //Didn't find class "xxx" on path: DexPathList[[zi...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

初始化ObjectBox

添加ObjectBox 类

object ObjectBox {
    lateinit var boxStore: BoxStore
        private set

    fun init(context: Context) {
        boxStore = MyObjectBox.builder().androidContext(context).build()
    }
}

在Application初始化

 //初始化数据库
 ObjectBox.init(this)

model类,如果你想在数据库生成对应的表,需要在model类加入注解Entity(必须要有个,不然你会找不到MyObjectBox),id必须是Long类型


@Entity
data class MessageBean(
    @Id var id: Long = 0,
    var airStationFlag: String? = null,      
    var appArrAdress: String? = null,
    var appArrLocation: String? = null,
  )

增删改查

//id默认未0(0为自增)
ObjectBox.boxStore.boxFor(MessageBean::class.java).put(messageBean)


id必须和数据库内的id一致,不然则视为“增”

ObjectBox.boxStore.boxFor(MessageBean::class.java).put(messageBean)


ObjectBox.boxStore.boxFor(MessageBean::class.java).remove(id)//根据删除一个
ObjectBox.boxStore.boxFor(MessageBean::class.java).remove(id1,id2)//根据id删除多个
ObjectBox.boxStore.boxFor(MessageBean::class.java).remove(messageBean)//根据对象删除

//查询表内所有数据
ObjectBox.boxStore.boxFor(PushMessageBean::class.java).query().build().find()

//倒叙查询
ObjectBox.boxStore.boxFor(PushMessageBean::class.java).query() .orderDesc(PushMessageBean_.id).build().find()

//分页查询
ObjectBox.boxStore.boxFor(PushMessageBean::class.java).query().build().find(page*pageSize,pageSize)

//条件查询
ObjectBox.boxStore.boxFor(MessageBean::class.java).query()
            .equal(MessageBean_.id,1)
            .orderDesc(MessageBean_.id).build().find()
 //等于 equal
//大于 greater
//小于 less
//和 and
// 或 or
... 

更多请参考官网ObjectBox官网或者git

 类似资料: