GreenDao集成教程(二) DB基础操作

作者: 冷寒 | 来源:发表于2017-11-28 17:18 被阅读34次

    自定义包装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;
        }
        /**
         * 使用单例获取操作数据库对象
         *
         * @return
         */
        public static DBManager getInstance() {
            DBManager instance = null;
            if (manager == null) {
                synchronized (DBManager.class) {
                    if (instance == null) {
                        instance = new DBManager();
                        manager = instance;
                    }
                }
            }
            return instance;
        }
    
        /**
         * 判断是否存在数据库,若不存在则创建
         *
         * @return
         */
        public DaoMaster getDaoMaster() {
            if (daoMaster == null) {
                helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null);
                daoMaster = new DaoMaster(helper.getWritableDb());
            }
            return daoMaster;
        }
    
        /**
         * 完成对数据库的增删改查操作接口定义
         *
         * @return
         */
        public DaoSession getDaoSession() {
            if (daoSession == null) {
                if (daoMaster == null) {
                    daoMaster = getDaoMaster();
                }
                daoSession = daoMaster.newSession();
            }
            return daoSession;
        }
    
        /**
         * 关闭所有的数据库操作,关闭链接
         */
        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;
            }
        }
    
        /**
         * 打开输出日志,默认关闭
         */
        public void setDeBug() {
            QueryBuilder.LOG_SQL = true;
            QueryBuilder.LOG_VALUES = true;
        }
    }
    

    封装CommonDaoUtils增删改查操作实现类

    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: 增删改查操作实现类
     */
    public class CommonDaoUtils {
        private final String TAG = this.getClass().getSimpleName();
    
        private DBManager manager;
    
        public CommonDaoUtils(Context context) {
            manager = DBManager.getInstance();
            manager.init(context);
        }
    
        /**
         * 完成对象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对象
         *
         * @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;
        }
    
        /**
         * 修改对象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入口

    相关文章

      网友评论

        本文标题:GreenDao集成教程(二) DB基础操作

        本文链接:https://www.haomeiwen.com/subject/jryebxtx.html