天天看点

XUtils数据库使用小结

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