最近公司项目使用到ObjectBox数据库,恰好最近项目刚好忙完,以此记录下ObjectBox的学习实践过程。
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
初始化一次,例如在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 mStuBox;
@Override
public void onCreate() {
super.onCreate();
initDB();
}
private void initDB() {
// 获得BoxStore
mBoxStore = MyObjectBox.builder().androidContext(this).build();
// 获得某个 实体类的Box
mStuBox = mBoxStore.boxFor(Student.class);
}
}
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 基于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 添加权限
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);
}
}
点击通知浏览数据库
5、安装之后 ----( 电脑端查看数据 )
在命令行中 输入:
adb forward tcp:8090 tcp:8090
在浏览器中输入
http://localhost:8090/index.html
ObjectBox优势、特点、基本使用以及浏览数据库数据介绍完毕。下篇 接着学习ObjectBox中 数据表之间的关系、查询数据库的相关用法介绍