【译】ObjectBox官方文档(6)——ObjectBox与Kotlin

转载请注明出处 第一次翻译文档,水平有限,如有任何错误和不妥,望指正。此外如想知道与 RealmGreenDAO 的对比请查看这篇博客 官网:ObjectBox 官方示例:Github

ObjectBoxAndroid 平台上为 Kotlin 提供了完整的支持。这允许使用 Kotlin 类(常规类和data类)来创建实体。通过对 Kotlin 的支持,你可以高效地构建更快的应用程序。

配置

配置方式与 java 项目的配置相同,请参阅简介页面。此外,我们提供了一个很小的 Kotlin 扩展函数的依赖库。我们会对它持续更新,所以让我们知道你对它的建议和意见。只需将其添加到模块依赖项:

dependencies {
    compile "io.objectbox:objectbox-android:$objectboxVersion"
    compile "io.objectbox:objectbox-kotlin:$objectboxVersion"
}
复制代码

当您完成了Sync project,就可以在 Kotlin 中定义实体。

Kotlin实体

Kotlin,你应该这样定义ID属性:

@Id var id: Long = 0
复制代码

ID 必须是一个var(不是val),因为 ObjectBoxput一个新实体后为其分配 ID。并且,ID 应该是基础数据类型的Long,同时,赋值为特殊值0,将它标记为一个新的实体。

所以一个简单的数据类是这样的:

@Entity
data class Note(
        @Id var id: Long = 0,
        val text: String
)
复制代码

实体类的构造器

ObjectBox需要调用构造函数来创建对象。它将选择下面其中一种:

  • all-args 构造函数: 如果 ObjectBox 找到一个与所有持久化属性匹配的构造函数(类型和名称匹配),它将优先调用它。
  • no-args 构造函数: 如果没有找到 all-args 构造函数,ObjectBox 则会调用 no-args (默认)构造函数初始化字段。

注意:Kotlindata类通常会提供兼容的 all-args 构造函数。但是,如果是临时属性或着映射关系属性是构造函数的一部分,则ObjectBox不能使用它。

在Kotlin中定义映射关系

Kotlin中定义关系非常类似于标准JavaObjectBox中定义关系。在Kotlin中,通常会使用一个lateinit修饰符来表示关系属性。如上述连接所述“初始化魔术”也是相同的(这句翻译相当的别扭,不是很清楚它指的什么,希望有人能纠正)。

示例:

@Entity
class Order {
    @Id var id: Long = 0
 
    lateinit var customer: ToOne<Customer>
}
 
@Entity
class Customer {
    @Id var id: Long = 0
 
    @Backlink
    lateinit var orders: List<Order>
}
复制代码

转载于:https://juejin.im/post/5a31d2506fb9a0451f30f27b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值