美文网首页
ObjectBox的使用

ObjectBox的使用

作者: ironman_ | 来源:发表于2020-02-13 16:46 被阅读0次

    添加依赖

    在整个项目的build.gradle里添加

    buildscript {
        ext.objectboxVersion = '2.3.4'
        repositories {
            jcenter()
        }
        dependencies {
            // Android Gradle Plugin 3.0.0 or later supported
            classpath 'com.android.tools.build:gradle:3.3.2'
            classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
        }
    }
    

    在app的build.gradle里添加

    如果是kotlin

    apply plugin: 'com.android.application'
    apply plugin: 'kotlin-android'
    apply plugin: 'kotlin-kapt' // Required for annotation processing.
    apply plugin: 'io.objectbox' // Apply last.
    

    如果是java

    apply plugin: 'com.android.application'
    apply plugin: 'io.objectbox' // Apply last.
    

    好了,依赖加完了

    添加初始化代码

    添加初始化代码:

    kotlin, 可以把这个类放到自定义的app中,也可以单独一个类

    object ObjectBox {
        lateinit var boxStore: BoxStore
            private set
    
        fun init(context: Context) {
            boxStore = MyObjectBox.builder()
                    .androidContext(context.applicationContext)
                    .build()
        }
    }
    

    java

    public class ObjectBox {
        private static BoxStore boxStore;
    
        public static void init(Context context) {
            boxStore = MyObjectBox.builder()
                    .androidContext(context.getApplicationContext())
                    .build();
        }
    
        public static BoxStore get() { return boxStore; }
    }
    

    这里的MyObjectBox是编译自动生成的。如果编译之后没有生成,可以先按照下面的步骤添加Entity类,然后再编译,这样应该就可以生成了。

    然后在自定义的application中调用初始化

    kotlin:

    class ExampleApp : Application() {
        override fun onCreate() {
            super.onCreate()
            ObjectBox.init(this)
        }
    }
    

    java:

    public class ExampleApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            ObjectBox.init(this);
        }
    }
    

    接下来就可以使用了:

    val userBox: Box<User> = ObjectBox.boxStore.boxFor()
    

    上面部分的参考文档:https://docs.objectbox.io/getting-started

    开始使用

    添加entity

    // User.kt
    @Entity
    data class User(
            @Id var id: Long = 0,
            var name: String? = null
    )
    

    几个注意的点:

    • 类上面可以打@Entity,如果是基类则打@BaseEntity
    • 一定要有一个@Id,类型为Long的属性,用于自增属性。
    • kotlin中的data class一定要有默认值,不然可能会找不到默认的构造方法。
    • 如果某个字段不想序列化到数据库中可以打上:@Transient标签,从kotlin里或者objectBox中导入的都可以。

    增加:

    App.ObjectBox.boxStore.boxFor<Project>().put(project)
    

    查找:

    App.ObjectBox.boxStore.boxFor<Mark>()
            .query()
            .equal(Mark_.projectId, projectId)
            .build()
            .find()
    

    查找并且删除:

    val box = App.ObjectBox.boxStore.boxFor<Mark>()
    box.query().equal(Mark_.projectId, projectId).build().remove()
    

    query的参考文档:https://docs.objectbox.io/queries

    相关文章

      网友评论

          本文标题:ObjectBox的使用

          本文链接:https://www.haomeiwen.com/subject/vlrlfhtx.html