鸿蒙开发实战系列之一:鸿蒙开发实战系列之一:圆角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
这是本系列的第四篇,后面还会为你们带来更多的鸿蒙干货,敬请期待......。
若是文章对您有一点启发的话,但愿您能点个赞,来一波关注。