Android数据库ObjectBox使用笔记[一]:入门

ObjectBox[一]:入门
ObjectBox[二]:查询操作
ObjectBox[三]:关系
ObjectBox[四]:事务
ObjectBox[五]:Kotlin支持
ObjectBox[六]:数据监听和RX

最近公司项目使用到ObjectBox数据库,恰好最近项目刚好忙完,以此记录下ObjectBox的学习实践过程。

一、简介
  1. ObjectBox是一个超级快速的数据库,专为物联网和移动设备构建。
  2. ObjectBox是基于 NoSQL 的高性能数据库(无 .db 数据库文件)
  3. 无缝同步数据
  4. 相对其他数据库 更快
  5. 跨平台
  6. 数据库升级维护简单
二、配置

1、添加依赖 在项目build.gradle

buildscript {
    ext.objectboxVersion = '2.2.0'
    respositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
    }
}

2、在app或者module 的build.gradle 添加

apply plugin: 'com.android.application'
apply plugin: 'io.objectbox'

配置完毕之后,同步一下

3、添加实体类

/**
 * @ date: 2018/11/19 19:34
 * @ author: fmm
 * @ describe: 学生实体
 */
@Entity  
public class Student {
    @Id
    public long tableID;

    public String name;

    public int age;
    
}

注意: 1、ObjectBox 使用 IDs 的类型是long 自增 , 并在实体类 添加 @Entity 注解
2、实体类注解为@Id属性要是被private修饰 需要实现get\set 方法否则会build 失败;
在这里插入图片描述

4、build Project
Build > Make Project 在 Android Studio

三、核心类介绍

MyObjectBox:基于实体类生成,构建BoxStore

BoxStore:使用ObjectBox的入口,为数据库提供接口,并管理Boxs

Box: Box 持久化和查询实体,对于每一个实体都有一个Box

四、初始化ObjectBox

初始化一次,例如在Application类中初始化

boxStore = MyObjectBox.builder().androidContext(App.this).build();

在使用到的地方获得对应的实体Box

notesBox = ((App) getApplication()).getBoxStore().boxFor(Note.class);

例如:

public class App extends Application {

    private BoxStore mBoxStore;
    private Box<Student> mStuBox;

    @Override
    public void onCreate() {
        super.onCreate();
        initDB();
    }

    private void initDB() {
        // 获得BoxStore
        mBoxStore = MyObjectBox.builder().androidContext(this).build();
        // 获得某个 实体类的Box
        mStuBox = mBoxStore.boxFor(Student.class);
    }
}
五、ObjectBox 增删改查

put:更新或者插入 ,依赖于 被@Id注解的属性 是否存在 存在更新
不存在 插入

get:根据对象的@Id tableId ,能高效的获得相对应的实体。获取某个表的全部实体 使用getAll()
-----汗 一直 在使用查询的方法获取!!!

remove:删除实体

count:返回Box实体数量

query:返回query builder

具体的API参见 链接

增:

 Student stu = new Student();
        stu.setName("小明");
        stu.setAge(12);
        // 添加一条数据
        mStuBox.put(stu);

删除

 mStuBox.remove(long tableId);

Student stu = new Student();
        stu.setName("张三");
        stu.setAge(18);
        // 更新tableId为 1 的一条数据
        stu.setTableID(1L);
        mStuBox.put(stu);

 Student stu = mStuBox.query().equal(Student_.age, 18)
                .build()
                .findFirst();
六、ObjectBox 事务
  1. put 运行在隐形事务中
  2. 保存Lists使用(put(entities))
  3. 对应频繁多次操作数据库 使用 显形事务
七、ObjectBox 数据库浏览

由于ObjectBox 基于NoDB类型的数据库 ,因此无法通过查看.db文件来浏览数据。ObjectBox提供特殊的浏览数据库数据的方法

1、配置

dependencies {
    debugImplementation "io.objectbox:objectbox-android-objectbrowser:$objectboxVersion"
    releaseImplementation "io.objectbox:objectbox-android:$objectboxVersion"
}
​
// 配置在 dependencies 的下面
apply plugin: 'io.objectbox'

在这里插入图片描述

2、添加权限
自 Version2.2.0之后 ,需要在AndroidManifest.xml 添加权限

<!-- Required to provide the web interface -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required to run keep-alive service when targeting API 28 or higher -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>

3、在Application的onCreate()方法中,

  private void initDB() {
        // 获得BoxStore
        mBoxStore = MyObjectBox.builder().androidContext(this).build();
        if(BuildConfig.DEBUG){
            boolean started = new AndroidObjectBrowser(mBoxStore).start(this);
            Log.i("ObjectBrowser", "Started: " + started);
        }
    }

4、安装之后 ----( 手机端查看数据 )
在这里插入图片描述

点击通知浏览数据库

在这里插入图片描述

5、安装之后 ----( 电脑端查看数据 )

在命令行中 输入:

adb forward tcp:8090 tcp:8090

在这里插入图片描述

在浏览器中输入

http://localhost:8090/index.html

在这里插入图片描述

总结

ObjectBox优势、特点、基本使用以及浏览数据库数据介绍完毕。下篇 接着学习ObjectBox中 数据表之间的关系、查询数据库的相关用法介绍

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值