1、建立資料庫:
public class DBUtils {
public static DbManager getDb() {
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
.setDbName(BaseConstant.DB_NAME)
.setDbVersion()
.setDbOpenListener(new DbManager.DbOpenListener() {
@Override
public void onDbOpened(DbManager db) {
// 開啟WAL, 對寫入加速提升巨大
db.getDatabase().enableWriteAheadLogging();
}
})
.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
}
});
return x.getDb(daoConfig);
}
}
2、建立表格:
@Column(name = “id_”, isId = true, autoGen = false),isId這個屬性代表的是_id是不是表的主鍵,autoGen代表的是主鍵是否是自增長,如果不寫autoGen這個屬性,預設是自增長的屬性。(注意,如果這個字段是有值的,autoGen一定要設成false)
@Table(name = "GroupBean")
public class GroupBean implements Serializable {
public static final String GROUP_ID = "groupId";
@Column(name = "id_", isId = true, autoGen = false)
private int id_;
//群名稱
@Column(name = "groupName")
private String groupName;
//群頭像
@Column(name = "groupUrl")
private String groupUrl;
//群主id
@Column(name = "groupMasterId")
private String groupMasterId;
//是否退出群組id
@Column(name = "join")
private int join;
public GroupBean() {
}
public int getJoin() {
return join;
}
public void setJoin(int join) {
this.join = join;
}
public int getId_() {
return id_;
}
public void setId_(int id_) {
this.id_ = id_;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public String getGroupUrl() {
return groupUrl;
}
public void setGroupUrl(String groupUrl) {
this.groupUrl = groupUrl;
}
public String getGroupMasterId() {
return groupMasterId;
}
public void setGroupMasterId(String groupMasterId) {
this.groupMasterId = groupMasterId;
}
}
3、增
db.save(Object o),其中object可以是一個對象也可以是List清單
static DbManager dbManager = DBUtils.getDb();
public static void saveFriends(List<ExpertBean> expertBeans) {
Observable.create(emitter -> {
dbManager.delete(ExpertBean.class); // 删除ExpertBean表格的資料
dbManager.save(expertBeans);
}).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(o -> {
});
}
4、删
db.delete(Object o),對一條或者多條資料進行删除。
db.delete(Class<?> entry), 删除entry表格裡的所有資料,表格還存在。
db.delete(Class<?> entry, WhereBuilder whereBuilder), 用where語句進行删除操作
5、查
db.findAll(Class<?> class), 查詢class表裡面所有資料
db.findFirst(Class<?> class), 查詢class表裡面第一條資料
db.findById(Class<?> class, Object o), 根據id查詢
db.selector(Class<?> class).where(String columnName, String op, String value).findAll()/findFirst/limit(int num)...
其中limit(int num)表示分頁查詢
public static Observable<List<GroupBean>> getGroups() {
return Observable.create((ObservableEmitter<List<GroupBean>> emitter) -> {
List<GroupBean> list = dbManager.selector(GroupBean.class).where("join", "=", "1").findAll();
if (list == null) {
list = new ArrayList<>();
}
emitter.onNext(list);
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
}
6、改
db.saveOrUpdate(Object o),根據id判斷是否存在改資料,存在就update下,不存在則save下
db.update(Class<?> class, WhereBuilder whereBuilder, KeyValue... nameValuePairs)
public static Observable unJoinGroup(String group_ip) {
return Observable.create(emitter -> {
dbManager.update(GroupBean.class, WhereBuilder.b("id_", "=", group_ip), new KeyValue("join", ));
EventBus.getDefault().post(new QuitGroupEvent());
emitter.onNext(group_ip);
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread());
}