美文网首页
objectBox复杂数据类型存储问题

objectBox复杂数据类型存储问题

作者: 御坂七十一号 | 来源:发表于2020-09-17 13:47 被阅读0次

当存储对象类中使用了除String、Int 、Long等类型以外的复杂类型时候,objectBox的处理方法:
实现一个objectBox的PropertyConverter接口的类,将复杂类型处转换为基础类型

实体类

import android.net.Uri
import com.zbb.mine.em.SourceFrom
import com.zbb.mine.em.SourceFromConverter
import io.objectbox.annotation.Convert
import io.objectbox.annotation.Entity
import io.objectbox.annotation.Id
import io.objectbox.relation.ToMany

@Entity
class MusicEntity() {
    //    @assignable 手动管理id
    @Id
    var id: Long = 0
    var name: String = ""
    var singer: String = "未知"
    var avatarUrl: String? = null
    var avatarPath: String? = null
    var url: String? = null
    var path: String? = null
    @Convert(converter = UriConverter::class, dbType = String::class)
    var uri: Uri? = null
    var lrcUrl: String? = null
    var lrcPath: String? = null
    var duration: Int = 0
    var fileSize: Long = 0
    var album: String? = null
    @Convert(converter = SourceFromConverter::class, dbType = Int::class)
    var from: SourceFrom = SourceFrom.UNKMOWN
    //    @Transient 不存放到数据库
//    var xx
    lateinit var groups: ToMany<GroupEntity>
    override fun toString(): String {
        return "MusicEntity(id=$id, name='$name', singer='$singer', avatarUrl=$avatarUrl, avatarPath=$avatarPath, url=$url, path=$path, uri=$uri, lrcUrl=$lrcUrl, lrcPath=$lrcPath, duration=$duration, fileSize=$fileSize, album=$album, from=$from)"
    }
}

转换处理类

import android.net.Uri
import io.objectbox.converter.PropertyConverter

class UriConverter : PropertyConverter<Uri, String> {
    override fun convertToDatabaseValue(entityProperty: Uri?): String {
        return entityProperty?.toString() ?: ""
    }

    override fun convertToEntityProperty(databaseValue: String?): Uri? {
        if (databaseValue == null) {
            return null
        } else {
            return Uri.parse(databaseValue)
        }
    }
}

相关文章

  • objectBox复杂数据类型存储问题

    当存储对象类中使用了除String、Int 、Long等类型以外的复杂类型时候,objectBox的处理方法:实现...

  • Java - Android GreenRobot新作:Obje

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

  • ObjectBox(九)——存储复杂数据结构

    前言 之前讲过了ObjectBox对于基本数据的存储等问题,大家感兴趣的话可参考ObjectBox(一)——obj...

  • 简单数据类型和复杂数据类型

    简单数据类型和复杂数据类型 1.1 简单数据类型 ​ 简单类型(基本数据类型、值类型):在存储时变量中存储的是值本...

  • JS基础——003

    1.Date日期对象 2.数组 3.字符串 4.数据类型 简单数据类型:在存储时变量中存储的是值本身复杂数据类型:...

  • 数据结构(一)--入门和预备知识

    数据结构 1. 概述 数据结构定义: 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储...

  • 数据结构概述

    数据结构概述 (1) 定义:我们如何把现实中大量而复杂的问题已特定的 数据类型和特定的存储结构保存到主存储器(内...

  • ObjectBox 文件存储查看

    方便简单的查看 ObjectBox data.mdb 数据。 Object Box 是个好东西,效率很棒,我估计迟...

  • 【安卓相关】GreenDao 学习,数据库存储复杂对象

    GreenDao 存储复杂对象,除了基本数据类型,往往还有一些复杂对象的存储需求,这个时候就可以使用 GreenD...

  • 数据结构概述

    数据结构概述 一、定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,...

网友评论

      本文标题:objectBox复杂数据类型存储问题

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