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());
}