发布于2021-06-14 09:36 阅读(352) 评论(0) 点赞(22) 收藏(5)
ObjectBox是一个超快的面向对象数据库,相比于Sqlite,效率高了10倍左右
在跟项目中的build.gradle中引入:
buildscript {
...
ext.objectboxVersion = '2.9.1'
dependencies {
...
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
...
}
}
在app下的build.gradle头部引入
(有以下两种情况,看你项目中用的什么):
plugins {
...
id 'io.objectbox'
}
apply plugin: 'io.objectbox'
接下来将会讲解ObjectBox基本使用
1、新建一个模型类,并使用 @Entity 将类注解,@Id 为自增主键(进阶的代码栗子会详细一点讲注解),@Id 注解也是必不可少的。
package com.mt.objectboxproject
import io.objectbox.annotation.Entity
import io.objectbox.annotation.Id
@Entity
data class Person(
@Id
var id: Long = 0,
var age: Int = 0,
var name: String? = null
)
2、AndroidStudio操作:Build -> MakeProject,或者点击运行按钮旁边的小锤子锤一下,这一步是为了生成ObjectBox所需要的文件,之后便会看到生成了 app\objectbox-models\default.json 文件
1、创建ObjectBox的小助手,需要在 Application 中进行调用 init 初始化
package com.mt.objectboxproject
import android.content.Context
import io.objectbox.BoxStore
/**
* ObjectBox的小助手,需要在Application中进行调用init初始化
*/
object ObjectBox {
lateinit var store: BoxStore
private set
fun init(context: Context) {
store = MyObjectBox.builder()
.androidContext(context.applicationContext)
.build()
}
}
2、在 Application 中初始化
package com.mt.objectboxproject
import android.app.Application
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
//初始化ObjectBox
ObjectBox.init(this)
}
}
package com.mt.objectboxproject
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//插入一条数据
val userBox = ObjectBox.store.boxFor(Person::class.java)
val person = Person()
person.age = 21
person.name = "第三女神程忆难"
userBox.put(person)
//==========================================================================================
//插入多条数据
val persons = mutableListOf<Person>()
//模拟多条数据
val person1 = Person()
person1.age = 24
person1.name = "1bit"
val person2 = Person()
person2.age = 25
person2.name = "梦想橡皮擦"
val person3 = Person()
person3.age = 26
person3.name = "沉默王二"
persons.add(person1)
persons.add(person2)
persons.add(person3)
//插入数据库
userBox.put(persons)
}
}
package com.mt.objectboxproject
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userBox = ObjectBox.store.boxFor(Person::class.java)
//==========================================================================================
//根据主键id查询
val person = userBox[1]
//==========================================================================================
//获取person有所数据
val allPersons = userBox.all
//==========================================================================================
//条件查询
val build = userBox.query()
.equal(Person_.name, "沉默王二")
.order(Person_.name)
.build()
//查找数据
val find = build.find()
//记得close
build.close()
}
}
package com.mt.objectboxproject
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userBox = ObjectBox.store.boxFor(Person::class.java)
//==========================================================================================
//根据主键Id去删除
val isRemoved = userBox.remove(1)
//==========================================================================================
//根据主键id集合去删除
val ids = mutableListOf<Long>(1,2,3,4)
userBox.removeByIds(ids)
//==========================================================================================
//根据模型类去删除
val person = userBox[1]
person.name = "第三女神程忆难"
userBox.remove(person)
//==========================================================================================
//删除所有数据
userBox.removeAll()
}
}
package com.mt.objectboxproject
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userBox = ObjectBox.store.boxFor(Person::class.java)
//==========================================================================================
//先查询获取到person,set值后重新put
val person = userBox[1]
person.name = "小傅哥"
userBox.put(person)
}
}
注解讲解
ObjectBox:https://docs.objectbox.io
原文链接:https://blog.csdn.net/qq_40881680/article/details/117610179
作者:想要飞翔的天使
链接:http://www.javaheidong.com/blog/article/222602/e96e5e98b23c968c78e6/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!