之前一直用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