天天看點

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