鴻蒙開發實戰系列之四:數據庫NoSQL-ObjectBox的使用

鴻蒙開發實戰系列之一:鴻蒙開發實戰系列之一:圓角java

鴻蒙開發實戰系列之二:鴻蒙開發實戰系列之二:事件總線EventBus/RxBusandroid

鴻蒙開發實戰系列之三:鴻蒙開發實戰系列之三:網絡請求(原生+ Retrofit)git

前言

隨着項目逐漸從demo玩具進入到企業級應用,簡單數據存儲已經不能知足產品的慾望了,因此咱們急需找到一款適合於鴻蒙系統的數據庫,數據庫必須符合輕量、高效、簡便、跨平臺、開源的特色,遍歷了一圈,找到一款ObjectBox符合以上這些特色。github

先簡單介紹下ObjectBox數據庫,它是greenrobot團隊開發的全新非關係型數據庫框架,該團隊還開發過greenDao,EventBus等熱門框架,實力雄厚。 ObjectBox是一個超級快速的數據庫,專門爲IoT和移動設備構建,是第一個高性能的符合ACID的NoSQL數據庫,ObjectBox小於1MB,所以它是移動應用程序、小型IoT設備和IoT網關的理想解決方案。 ObjectBox的主要優點:比競爭產品快10倍,跨平臺。能夠在Linux,Windows,Mac和iOS,Android,樹莓的PI,ARM,嵌入式或containerized等上運行,體積小。不足1MB,是一個NoSQL數據庫,API簡單易用,以上皆爲搬磚,具體介紹能夠訪問他們家官網https://objectbox.io 來學習數據庫

集成使用ObjectBox

下面進入正題,此文基於ObjectBox 2.7.1版本,對接進鴻蒙2.0系統中進行使用!網絡

一、環境配置

一、在項目目錄的build.gradle裏面配置app

buildscript {
    dependencies {
        classpath "io.objectbox:objectbox-gradle-plugin:2.7.1"
    }
}

二、module的build.gradle下添加如下代碼框架

//放在文件最開頭apply plugin: 'com.huawei.ohos.hap'的接下去一行
apply plugin: 'io.objectbox'

dependencies {
   implementation 'org.greenrobot:essentials:3.0.0-RC1'
}

三、添加相應的jar包和so到模塊libs裏面,相關文件能夠在demo中找到性能

二、初始化ObjectBox框架

一、新建一個須要存儲的javabean對象學習

@Entity   //entity用來標識這個是須要存儲的對象
public class BoxUser {
    @Id public long id;
    public int userId;
    public String userName;
}

二、直接build,會在模塊的build/generated/source對應包名目錄中生成MyObjectBox類及其餘類,將相關文件拷貝回工程對應目錄中 三、初始化數據庫

private Box boxCreateDb() {
        if (boxStore == null) {
            boxStore = MyObjectBox.builder().androidContext(getApplicationContext()).build();
            HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl初始化數據庫成功");
        }
        Box box = boxStore.boxFor(BoxUser.class);
        return box;
}

三、ObjectBox的基本操做

一、增

private void boxInsert() {
    BoxUser boxUser = new BoxUser();
    boxUser.userId = 1;
    boxUser.userName = "name1";
    boxCreateDb().put(boxUser);
    HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl插入數據成功");
}

二、刪

private void boxDelete() {
	boxCreateDb().query().equal(BoxUser_.userName,"name1").build().remove();
    HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl插入數據刪除成功");
}

三、改

private void boxUpdata() {
    List<BoxUser> result =  boxCreateDb().query().build().find();
    for(int i = 0 ; i < result.size() ; i ++){
        BoxUser boxUser = result.get(i);
        boxUser.userName = "usernameUpdata";
    }
    boxCreateDb().put(result);
    HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl更新數據成功");
}

四、查

private void boxQuery() {
	List<BoxUser> result =  boxCreateDb().query().build().find();
	HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl查詢到的數據條數:" +result.size());
	for(int i = 0 ; i < result.size() ; i ++){
		HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl查詢到的數據內容:" +result.get(i).userId + "====="+i+"====" + result.get(i).userName);
	}
}

總結

ObjectBox其餘更高級的數據庫操做,例如模型變動、事務等和Android的寫法一致,能夠參考Android相關寫法! 文中相關的代碼在git:https://github.com/maolinnan/HarmonyosClass

這是本系列的第四篇,後面還會爲你們帶來更多的鴻蒙乾貨,敬請期待......。

若是文章對您有一點啓發的話,但願您能點個贊,來一波關注。

相關文章
相關標籤/搜索