Android肝帝戰紀之ObjectBox移動資料庫框架探究與實現
阿新 • • 發佈:2019-02-11
ObjectBox移動資料庫框架
介紹
ObjectBox是移動端資料庫框架,靈感來自於NoSql,速度非常快,號稱是市面上最快的移動端資料庫框架。為什麼要使用
- 快
簡單,面向物件的API
新增依賴
專案級別的Gradle中新增:
buildscript {
ext.objectboxVersion = '1.4.4'
dependencies {
classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
}
}
module級別的Gradle的頭部新增:
apply plugin: 'io.objectbox' // after applying Android plugin
之後Make Project一下專案
- 新建一個數據庫物件,用註解@Entity標註
- @Id是主鍵的標識,自增
@Entity
public class UserProfile{
@Id
private long id;
private String name;
private int age;
public UserProfile(String name, int age){
this.name = name;
this .age = age;
}
}
之後重新編譯一下程式,生成MyObjectBox的物件
之後在全域性的Application中獲取這個物件
public class MyApplication extends Application {
private BoxStore boxStore;
@Override
public void onCreate() {
super.onCreate();
boxStore = MyObjectBox.builder().androidContext(this).build();
if (BuildConfig.DEBUG) {
new AndroidObjectBrowser(boxStore).start(this);
}
}
public BoxStore getBoxStore() {
return boxStore;
}
}
之後在相應的Activity或者其他地方呼叫,每個資料庫物件都有自己相應的box
Box<UserProfile> userProfileBox = ((MyApplication)getApplication()).getBoxStore().boxFor(UserProfile.class);
獲取到userProfileBox之後,就可以進行相應的增刪改查了。
增
UserProfile user1 = new UserProfile(“wangming”, 18);
userProfileBox.put(user1);刪
// 刪除id是2的資料
userProfileBox.remove(2);
// 刪除所有
userProfileBox.removeAll();
- 改
// 呼叫put方法完成更新
UserProfile user1 = userProfileBox.query().equal(UserProfile_name,"min").build().findFirst();
user1.setName("wangming");
userProfileBox.put(user1);
- 查
// 單條件查詢:從所有使用者中查出name="min"的資料
List<UserProfile> users = userProfileBox.query().equal(UserProfile_.name,"min").build().find();
// 多條件查詢:從所有使用者中name = "min",age>18,並且secondName是以W開頭的
userProfileBox.query().equal(UserProfile_.name,"min")
.greater(UserProfile_.age,18)
.startWith(UserProfile_.secondName,"W");
.build()
.find();
//要返回匹配查詢的所有實體,只需呼叫 find()。
//要僅返回第一個結果,請使用 findFirst()。
List item =roleBox.query().startsWith(Role_.role_name,"採")
.or().equal(Role_.role_name,"運營")
.orderDesc(Role_.created_at).build().find();
QueryBuilder 還提供了greater、less、contain等API