2019独角兽企业重金招聘Python工程师标准>>>

官网:https://objectbox.io/

github:https://github.com/objectbox

介绍:ObjectBox是一个超快的面向对象数据库,专为物联网和移动设备而构建。我们为小型设备提供边缘计算,允许在本地存储和处理数据,以实现高效,快速和安全的数据管理。ObjectBox小于1MB,因此它是移动应用程序,小型物联网设备和物联网网关的理想解决方案。我们是第一个高性能的NoSQL,符合ACID的设备边缘数据库。我们所有的产品都是在开发人员的基础上构建的,因此它们易于使用并且需要最少的代码来实现。

支持语言:java,c/c++,go,swift,kotlin

基本涵盖了所有平台

此文主要供 Java使用ObjectBox

kotlin版本:https://docs.objectbox.io/kotlin-support

环境搭建:

1.

目前最新版本:2.3.3 (2019/3/9)

2,在app.build中添加插件

apply plugin: 'io.objectbox'

3.初始化ObjectBox(一般建议在Appliction初始化),在初始化之前我们先要建立ObjectBox所需的实体类(这是个坑,不建立则没办法初始化)

4.建立实体类

//序列化实体类 Entity必加
@Entity
public class LoginBean {//id字段是必要的字段,不可忽略,不可用修饰符修饰@Idlong uid;//索引,查询大量数据可加快查询速度@IndexString loginName;//存储数据 可看做表字段String passWord;public String getLoginName() {return loginName;}public void setLoginName(String loginName) {this.loginName = loginName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}
}

添加完实体类 build下程序,ObjectBox生成初始化所需要的类

5.初始化ObjectBox

public class ObjectBox {private static BoxStore boxStore;public static void init(Context context){boxStore = MyObjectBox.builder().androidContext(context).build();}public static BoxStore getBoxStore() {return boxStore;}}
public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();ObjectBox.init(this);}}

6.添加/更新数据(如果当前添加的数据存在则更新数据,否则就添加)

box.put(object);

7.删除/删除所有数据

box.remove(object);
box.removeAll();

8.简单的条件查询

box.get(long id);

9.查询所有数据

box.getAll();

10:工具类

public class ObjectBoxUtils {/*** 添加数据* */public static <T> void addData(Object o, Class c){Box<T> box= ObjectBox.getBoxStore().boxFor(c);box.put((T) o);}/**** 获取指定查询数据* */public static <T> T getConditionsData(Class clazz,String key){Field[] fs = clazz.getDeclaredFields();for (int i = 0; i < fs.length; i++){Field f = fs[i];f.setAccessible(true);if (f.getName().endsWith(key)) {try {long id = (long) f.get(clazz);Box<T> box= ObjectBox.getBoxStore().boxFor(clazz);return box.get(id);} catch (IllegalAccessException e) {e.printStackTrace();}}}return null;}public static  <T> List<T> getAllData(Class clazz){Box<T> box= ObjectBox.getBoxStore().boxFor(clazz);return box.getAll();}//删除数据public static <T> void deleteData(Object o,Class clazz){Box <T> box= ObjectBox.getBoxStore().boxFor(clazz);box.remove((T) o);}/*** 删除数据* */public static <T>  void removeAllData(Class clazz){Box <T> box= ObjectBox.getBoxStore().boxFor(clazz);box.removeAll();}}

11简单的一个demo

Activity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private EditText loginName,passWord;private TextView content;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.login).setOnClickListener(this);//获取所有数据findViewById(R.id.getAll).setOnClickListener(this);//更新数据findViewById(R.id.update).setOnClickListener(this);//删除数据findViewById(R.id.delete).setOnClickListener(this);//删除所有数据findViewById(R.id.deleteAll).setOnClickListener(this);content = findViewById(R.id.content);loginName = findViewById(R.id.loginName);passWord = findViewById(R.id.passWord);}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.login:if (TextUtils.isEmpty(loginName.getText().toString())){Toast.makeText(this, "请输入用户名", Toast.LENGTH_SHORT).show();}else if (TextUtils.isEmpty(passWord.getText().toString())){Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();}else {LoginBean loginBean = new LoginBean();loginBean.setLoginName(loginName.getText().toString());loginBean.setPassWord(passWord.getText().toString());ObjectBoxUtils.addData(loginBean,LoginBean.class);Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();}break;case R.id.getAll:getLoginInfo();break;case R.id.update:LoginBean loginBean = new LoginBean();loginBean.uid = 1;loginBean.setLoginName("张三");loginBean.setPassWord("1234qwer");upData(loginBean);break;case R.id.delete:LoginBean delete = new LoginBean();delete.uid = 1;ObjectBoxUtils.deleteData(delete,LoginBean.class);break;case R.id.deleteAll:ObjectBoxUtils.removeAllData(LoginBean.class);break;}}private void getLoginInfo(){List<LoginBean> beanList = ObjectBoxUtils.getAllData(LoginBean.class);StringBuffer buffer = new StringBuffer();if (!beanList.isEmpty()){for (LoginBean loginBean : beanList){buffer.append("loginName:").append(loginBean.getLoginName()).append("\n");buffer.append("password:").append(loginBean.getPassWord()).append("\n");Log.e("uid",loginBean.uid +"");Log.e("loginName",loginBean.getLoginName());Log.e("password",loginBean.getPassWord());}}else {buffer.append("暂无数据");}content.setText(buffer.toString());}private void upData(LoginBean loginBean){ObjectBoxUtils.addData(loginBean,LoginBean.class);}
}

xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><android.support.v4.widget.NestedScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:id="@+id/loginName"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:hint="请输入用户名"/><EditTextandroid:id="@+id/passWord"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:hint="请输入密码"/><Buttonandroid:id="@+id/login"android:layout_width="match_parent"android:layout_margin="10dp"android:layout_height="60dp"android:text="登录"/><Buttonandroid:id="@+id/getAll"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:text="获取所有数据"/><Buttonandroid:id="@+id/update"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:text="更新id为1的数据"/><Buttonandroid:id="@+id/delete"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:text="删除id为1的数据"/><Buttonandroid:id="@+id/deleteAll"android:layout_width="match_parent"android:layout_height="60dp"android:layout_margin="10dp"android:text="删除所有数据"/><TextViewandroid:id="@+id/content"android:layout_width="match_parent"android:layout_height="wrap_content"android:background="@color/colorAccent"android:textColor="@android:color/white"android:layout_margin="20dp"/></LinearLayout></android.support.v4.widget.NestedScrollView></LinearLayout>

注意:记得在manifests添加Appliction

转载于:https://my.oschina.net/u/2355512/blog/3020181

初识ObjectBox--Android平台相关推荐

  1. Android平台开发指导(Android Porting Guide)

    本文为Android平台开发人员和Android设备制造商提供了底层开发指导.如果你对Android的上层应用开发很感兴趣,请访问Android Developers Site. 关于这份指导书 这份 ...

  2. 在Ubuntu上编译opencv 2.4.13源码支持android平台操作步骤

    之前在https://blog.csdn.net/fengbingchun/article/details/96430706中编译过opencv源码用于海思平台,这里通过修改脚本编译opencv 2. ...

  3. android显示温湿度设计与实现,基于Android平台蝴蝶兰大棚温湿度测控系统的设计与实现...

    摘要: 随着物联网技术在农业设施智能化控制方面的广泛应用,温室大棚环境因子的监测与设施的控制也得到了长足的进步.从经济效益角度来说,专业化人才需求的不断增加与劳动力成本的不断提高之间的矛盾,从农业产业 ...

  4. android学生个人事物管理系统,基于Android平台的学生个人事务管理系统的设计与实现(整理版).doc...

    DSJKFHJKDH FJDHJKFH KDSJH JKDHF JKDS HKJ HGFDSJHF JHFJK HFKSD JKFJDSKJF DSJF;DS 摘 要 Android智能手机越来越普及 ...

  5. 奥比中光Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题

    相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...

  6. Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题

    相机:Gemini 3D双目结构光深度相机 环境:Android7.1 软件:SDK中的java demo下的depthforopenni2 问题: 在Android样例depthforopenni2 ...

  7. Android平台使用PocketSphinx做离线语音识别,小范围语音99%识别率

    为什么80%的码农都做不了架构师?>>>    最近语音识别很火,但是都是用的在线语音识别,研究了一下离线语音识别,小范围内的语音识别率还不错,在此记录一下 首先本文要说的两个前提1 ...

  8. MVP在Android平台上的应用

    2019独角兽企业重金招聘Python工程师标准>>> MVP在Android平台上的应用 原文链接 : Introduction to Model-View-Presenter o ...

  9. Dexposed:Android平台免Root无侵入AOP框架

    本文来自阿里巴巴技术协会(ATA) 本文首发于 http://www.infoq.com/cn/news/2015/07/dexposed 近日,阿里巴巴无线事业部推出首个重量级Android开源项目 ...

  10. Android平台开源项目

    本文收集了比较不错的Android开源项目,研究开源项目是对Android平台掌握的一个最佳的方式. 由Android的核心开发团队提供了15个优秀的示例项目,包含了游戏.图像处理.时间显示.开始菜单 ...

最新文章

  1. 揭晓高速公路场景下计算机视觉与交通的秘密
  2. unet详解_UNet解释及Python实现
  3. ASP.NET获取客户端、服务器端基础信息
  4. C语言%.2f四舍五入
  5. 【Git、GitHub、GitLab】一 Git安装与Git最小配置
  6. [转]关于sizeof()的一些思考
  7. 如何分析网站日志文件
  8. 微软服务器延迟,经过六个多月的延迟,微软终于推出Hyper-V Server 2019
  9. Loadrunner登录判断
  10. 实时环境映射贴图(Real-time Evironmnet Mapping)
  11. Haskell:理解Haskell中的CPS(Cont)
  12. 500 G JAVA视频网盘分享
  13. 800万商户都在抖音开通了企业号建立了私域流量新领地,你还在等什么
  14. php表单提交到数据库详解
  15. H5播放器标签video播放mp4格式有声音没有图像解决方法
  16. 腾讯T3整理分享的LeetCode算法小抄完整文档
  17. 沙发的故事——人才的价值在于贡献度?
  18. 【教学类-13-02】20221115《数字色块图5*7*8-A4横板-竖切》(中班主题《》)
  19. requests+xpath爬取电影天堂电影信息
  20. q85 芯片服务器,英特尔产品路线图曝光:将发布多款新品

热门文章

  1. Linux下安装Python3.6(可用)
  2. Hadoop2.8集群安装详细教程
  3. Linux服务器启动流程详解
  4. CentOS 7防火墙开启路由功能和开放特定端口
  5. 常用 doc bat 命令总结
  6. java holder_Java DataHolder.supports方法代码示例
  7. 解决WORD文档无法显示链接的图像问题
  8. 解决“Cannot merge new index 67208 into a non-jumbo instruction”的问题
  9. 解决ssh登录过慢问题
  10. 有没有办法从nodejs代码中的package.json获取版本?