GreenDao集成教程(二) DB基礎(chǔ)操作

自定義包裝DBManager工具類

package com.cheung.android.fullstackandroid.manager;

import android.content.Context;

import com.cheung.android.fullstackandroid.entity.DaoMaster;
import com.cheung.android.fullstackandroid.entity.DaoSession;

import org.greenrobot.greendao.query.QueryBuilder;

/**
 * author: C_CHEUNG
 * created on: 2017/11/27
 * description: 封裝DB操作類
 */
public class DBManager {
    private final String TAG = this.getClass().getSimpleName();
    private final String DB_NAME = "db.sqlite";
    public volatile static DBManager manager;
    private static DaoMaster.DevOpenHelper helper;
    private static DaoMaster daoMaster;
    private static DaoSession daoSession;
    private Context context;


    private DBManager() {
    }

    public void init(Context context){
        this.context = context;
    }
    /**
     * 使用單例獲取操作數(shù)據(jù)庫(kù)對(duì)象
     *
     * @return
     */
    public static DBManager getInstance() {
        DBManager instance = null;
        if (manager == null) {
            synchronized (DBManager.class) {
                if (instance == null) {
                    instance = new DBManager();
                    manager = instance;
                }
            }
        }
        return instance;
    }

    /**
     * 判斷是否存在數(shù)據(jù)庫(kù),若不存在則創(chuàng)建
     *
     * @return
     */
    public DaoMaster getDaoMaster() {
        if (daoMaster == null) {
            helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);
            daoMaster = new DaoMaster(helper.getWritableDb());
        }
        return daoMaster;
    }

    /**
     * 完成對(duì)數(shù)據(jù)庫(kù)的增刪改查操作接口定義
     *
     * @return
     */
    public DaoSession getDaoSession() {
        if (daoSession == null) {
            if (daoMaster == null) {
                daoMaster = getDaoMaster();
            }
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }

    /**
     * 關(guān)閉所有的數(shù)據(jù)庫(kù)操作,關(guān)閉鏈接
     */
    public void closeConnection() {
        closeHelper();
        closeDaoSession();
    }

    private void closeHelper() {
        if (helper != null) {
            helper.close();
            helper = null;
        }
    }

    private void closeDaoSession() {
        if (daoSession != null) {
            daoSession.clear();
            daoSession = null;
        }
    }

    /**
     * 打開(kāi)輸出日志,默認(rèn)關(guān)閉
     */
    public void setDeBug() {
        QueryBuilder.LOG_SQL = true;
        QueryBuilder.LOG_VALUES = true;
    }
}

封裝CommonDaoUtils增刪改查操作實(shí)現(xiàn)類

package com.cheung.android.fullstackandroid.manager;

import android.content.Context;
import android.database.sqlite.SQLiteException;

import com.cheung.android.fullstackandroid.entity.Member;

import java.util.List;

/**
 * author: C_CHEUNG
 * created on: 2017/11/27
 * description: 增刪改查操作實(shí)現(xiàn)類
 */
public class CommonDaoUtils {
    private final String TAG = this.getClass().getSimpleName();

    private DBManager manager;

    public CommonDaoUtils(Context context) {
        manager = DBManager.getInstance();
        manager.init(context);
    }

    /**
     * 完成對(duì)象Member的Insert操作
     *
     * @param member
     * @return
     */
    public boolean insertMember(Member member) throws SQLiteException {
        boolean flag = false;
        long secCode = manager.getDaoSession().insert(member);
        if (secCode > 0) {
            flag = true;
        }
        return flag;
    }

    /**
     * 批量插入Member對(duì)象
     *
     * @param members
     * @return
     * @throws SQLiteException
     */
    public boolean insertMemberAry(final List<Member> members) throws SQLiteException {
        boolean flag = false;
        try {
            manager.getDaoSession().runInTx(new Runnable() {
                @Override
                public void run() {
                    for (Member member : members) {
                        manager.getDaoSession().insertOrReplace(member);
                    }
                }
            });
            flag = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return flag;
    }

    /**
     * 修改對(duì)象Member
     * @param member
     * @return
     * @throws SQLiteException
     */
    public boolean updateMember(Member member){
        boolean flag = false;
        try {
            manager.getDaoSession().update(member);
            flag = true;
        }catch (Exception ex){
            ex.printStackTrace();
        }

        return flag;
    }

    /**
     * 刪除指定Member
     * @param member
     * @return
     */
    public boolean deleteMember(Member member){
        boolean flag = false;
        try {
            manager.getDaoSession().delete(member);
            flag = true;
        }catch (Exception ex){
            ex.printStackTrace();
        }
        return flag;
    }

}

DEMO入口

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容