当前位置:   article > 正文

鸿蒙开发实战系列之四:数据库NoSQL-ObjectBox的使用_在鸿蒙开发service 连接sql

在鸿蒙开发service 连接sql

鸿蒙开发实战系列之一:鸿蒙开发实战系列之一:圆角

鸿蒙开发实战系列之二:鸿蒙开发实战系列之二:事件总线EventBus/RxBus

鸿蒙开发实战系列之三:鸿蒙开发实战系列之三:网络请求(原生+ Retrofit)

前言

随着项目逐渐从demo玩具进入到企业级应用,简单数据存储已经不能满足产品的欲望了,所以我们急需找到一款适合于鸿蒙系统的数据库,数据库必须符合轻量、高效、简便、跨平台、开源的特点,遍历了一圈,找到一款ObjectBox符合以上这些特点。

先简单介绍下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系统中进行使用!

1、环境配置

1、在项目目录的build.gradle里面配置

buildscript {
    dependencies {
        classpath "io.objectbox:objectbox-gradle-plugin:2.7.1"
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5

2、module的build.gradle下添加以下代码

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

dependencies {
   implementation 'org.greenrobot:essentials:3.0.0-RC1'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3、添加相应的jar包和so到模块libs里面,相关文件可以在demo中找到

在这里插入图片描述

2、初始化ObjectBox框架

1、新建一个需要存储的javabean对象

@Entity   //entity用来标识这个是需要存储的对象
public class BoxUser {
    @Id public long id;
    public int userId;
    public String userName;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2、直接build,会在模块的build/generated/source对应包名目录中生成MyObjectBox类及其他类,将相关文件拷贝回工程对应目录中
在这里插入图片描述

3、初始化数据库

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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3、ObjectBox的基本操作

1、增

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插入数据成功");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2、删

private void boxDelete() {
	boxCreateDb().query().equal(BoxUser_.userName,"name1").build().remove();
    HiLog.warn(new HiLogLabel(HiLog.LOG_APP, 0, "===demo==="), "NoSQl插入数据删除成功");
}
  • 1
  • 2
  • 3
  • 4

3、改

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更新数据成功");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4、查

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);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

总结

ObjectBox其他更高级的数据库操作,例如模型变更、事务等和Android的写法一致,可以参考Android相关写法!
文中相关的代码在git:https://github.com/maolinnan/HarmonyosClass

这是本系列的第四篇,后面还会为大家带来更多的鸿蒙干货,敬请期待…。

如果文章对您有一点启发的话,希望您能点个赞,来一波关注。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/291819
推荐阅读
相关标签
  

闽ICP备14008679号