objectbox数据库

本文详细介绍了Android上的ObjectBox数据库的使用,包括引入、实体类定义、初始化、增删改查操作,以及数据库的升级、表关系处理、求和等操作。重点讲解了@ToOne和@ToMany的关联注解,以及懒加载和聚合函数的应用。
摘要由CSDN通过智能技术生成

一、引入

在项目build文件中

repositories {
    google()
    jcenter()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:4.0.2'
    classpath "io.objectbox:objectbox-gradle-plugin:2.9.1"
}

在app的build文件中

apply plugin: 'io.objectbox'

设置so库防止LinkageError崩溃

ndk {
    //设置支持的SO库架构
    abiFilters 'armeabi', "armeabi-v7a"
}

可选:Kotlin

对于使用Kotlin的Android项目,请务必添加kotlin-kapt:

apply plugin: 'kotlin-android' // if using Kotlin
apply plugin: 'kotlin-kapt' // if using Kotlin
apply plugin: 'io.objectbox' // apply last

可选:高级设置

ObjectBox插件使用合理的默认值并自动检测大多数配置。 但是,如果需要,您可以使用高级设置选项配置模型文件路径,MyObjectBox包,启用使用高级设置选项。

Advanced Setup - ObjectBox Docs

二、实体类

@Entity
public class User {

    @Id
    public long id;

    @Index
    public String accountNumber;

    public String name;

    public String password;
}

@Entity批注将Java类User标识为可持久化实体(数据库表名)。

@Id实体必须具有一个long类型的属性才能有效地获取或引用对象。自增id

@Index: 因为在ObjectBox中主键是必须设置为long类型的id, 当我们业务上需要另外主键时, 可以再标注@Index

@NameInDb: 字段在数据库中的命名

@Transient: 忽略字段, 不在表中生成

@ToOne:做一对一的关联注解,例如示例中表示一张学生表(Student)关联一张班级表(Class),此外还有一对多,多对多的关联,例如Class的示例:

@Entity
public class Class{
    @Id
    long id;
    
    @Backlink(to = "classToOne")
    public ToMany<Student> studentEntitys;
}

@ToMany:做一对多的关联注解,如示例中表示一张班级表(Class)关联多张学生表(Student)

@Backlink:表示反向关联

需要注意的是:默认情况下,id是会被objectbox管理的,也就是自增id,如果你想手动管理id需要在注解的时候加上@Id(assignable = true)即可。当你在自己管理id的时候如果超过long的最大值,objectbox 会报错。id=0的表示此对象未被持久化,id的值不能为负数。

三、初始化

MyObjectBox类是objectbox自动生成的,需要通过Build> Make project操作来生成,在此之前,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值