美文网首页
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数据库使用说明

    如何使用ObjectBox 一、搭建ObjectBox环境1.在根目录的build文件中添加 在app.build...

  • ObjectBox的使用

    添加依赖 在整个项目的build.gradle里添加 在app的build.gradle里添加 如果是kotlin...

  • ObjectBox在Android中的使用

    ObjectBox官网 提要 因为最近做个小项目需要用到数据库,考虑使用ObjectBox。因为还是测试版,网上真...

  • Android ObjectBox

    Github地址:objectbox/objectbox-java官网objectbox参考文档 Gradle s...

  • ObjectBox使用简记

    这两天听朋友说起了最近Android出来了一个NoSql数据库ObjectBox,怀揣着好奇就建了一个Androi...

  • ObjectBox使用(一)

    项目经理大大又提出了新的需求,那作为程序员就只能埋头敲(复制?)代码了博主水平有限,目前还处于填坑之中,如有错误以...

  • ObjectBox 的高级使用

    根据条件查询 查询对象的复用 先初始化查询对象: 设置查询对象的参数后再查询: 集成 RxJava 先依赖: 最简...

  • Java - Android GreenRobot新作:Obje

    GreenRobot新作 - ObjectBox ​ObjectBox是GreenRobot的新作NoSQL存储系...

  • ObjectBox的使用方法

    官网:http://objectbox.io/ ObjectBox目前是Android上速度最快的数据库,有关Ob...

  • objectbox使用及对比

    一、数据库对比:1.特性对比 2.性能对比: 性能对比使用了官方出的对比demo: 二、各数据库使用了解1.obj...

网友评论

      本文标题:ObjectBox的使用

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