您当前的位置: 首页 >  kotlin

蓝不蓝编程

暂无认证

  • 0浏览

    0关注

    706博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

objectbox入门demo(Kotlin版本)

蓝不蓝编程 发布时间:2019-01-25 09:45:39 ,浏览量:0

objectbox介绍

objectbox是一款嵌入式数据库,最大的特点是快,号称最快,特别是查询速度。完成优点罗列如下:

  1. 超快 objectbox优于测试过的所有嵌入式数据库
  2. 面向对象的api 没有ORM,没有SQLite,简洁的api
  3. 自动升级 可以直接在对象上进行删除修改等操作
如何使用

demo源代码:https://gitee.com/cxyzy1/objectboxDemo

  1. 项目根目录下build.gradle文件配置:
buildscript {
    ext.kotlin_version = '1.3.20'
    ext.objectboxVersion = '2.3.1'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
    }
}
  1. app目录下build.gradle文件配置 1). 顶部增加:
apply plugin: 'io.objectbox'

2). dependencies中增加:

    implementation "io.objectbox:objectbox-android:$objectboxVersion"
    implementation "io.objectbox:objectbox-kotlin:$objectboxVersion"
    kapt "io.objectbox:objectbox-processor:$objectboxVersion"
  1. 同步一下工程
  2. 创建数据类
import io.objectbox.annotation.Entity
import io.objectbox.annotation.Id
@Entity
data class Note(
    @Id var id: Long = 0,
    var text: String? = null,
    var comment: String? = null
)
  1. 创建ObjectBox.kt (要先创建至少一个数据类,否则下面IDE编译如下代码时会提示找不到MyObjectBox)
import android.content.Context
import android.os.Environment
import io.objectbox.BoxStore
import java.io.File
object ObjectBox {
    lateinit var boxStore: BoxStore
        private set

    fun build(context: Context) {
        // This is the minimal setup required on Android
        boxStore = MyObjectBox.builder().androidContext(context.applicationContext).build()

        // Example how you could use a custom dir in "external storage"
        // (Android 6+ note: give the app storage permission in app info settings)
//        val directory = File(Environment.getExternalStorageDirectory(), "objectbox-notes");
//        boxStore = MyObjectBox.builder().androidContext(context.applicationContext)
//                .directory(directory)
//                .build()
    }
}
  1. Application中增加初始化
ObjectBox.build(this)
  1. activity中使用样例:
package com.cxyzy.demo

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.widget.Toast
import io.objectbox.Box
import io.objectbox.kotlin.boxFor
import io.objectbox.kotlin.query
import io.objectbox.query.Query
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    private lateinit var notesBox: Box
    private lateinit var notesQuery: Query
    private lateinit var notesAdapter: NotesAdapter
    private val dataList: MutableList = mutableListOf()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        notesBox = ObjectBox.boxStore.boxFor()
        notesQuery = notesBox.query {
            order(Note_.text)
        }
        loadData()
        initViews()
        addIv.setOnClickListener { addNote() }
    }

    private fun initViews() {
        notesAdapter = NotesAdapter(this, dataList)
        with(recyclerView)
        {
            layoutManager = LinearLayoutManager(this@MainActivity)
            adapter = notesAdapter
        }
        notesAdapter.onItemClickListener = object : OnItemClickListener {
            override fun OnItemClick(position: Int) {
                Toast.makeText(this@MainActivity, dataList[position].text, Toast.LENGTH_LONG).show()
            }
        }

    }

    private fun addNote() {
        val note = Note(text = "text", comment = "comment")
        notesBox.put(note)
        loadData()
        notesAdapter.notifyDataSetChanged()
    }

    private fun loadData() {
        val notes = notesQuery.find()
        dataList.clear()
        dataList.addAll(notes)
    }
}

FAQ:
  1. 如果报错:Unresolved reference: MyObjectBox,先检查依赖是否添加,再检查项目中是否添加了数据类。
参考资料

官网地址 http://objectbox.io github地址 https://github.com/objectbox/objectbox-java https://www.jianshu.com/p/24b7ffbbe383

安卓开发技术分享: https://blog.csdn.net/yinxing2008/article/details/84555061

关注
打赏
1639405877
查看更多评论
立即登录/注册

微信扫码登录

0.0424s