美文网首页
GreenDao使用

GreenDao使用

作者: Android百晓生 | 来源:发表于2019-12-19 16:20 被阅读0次

一、配置

1:工程的build.gradle
classpath'org.greenrobot:greendao-gradle-plugin:3.2.2'


image.png

2:项目的build.gradle
1) applyplugin:'org.greenrobot.greendao' // apply plugin


image.png

2)版本配置

android{
      greendao {
         schemaVersion1
      }
}
  1. implementation'org.greenrobot:greendao:3.2.2'
dependencies{
   implementation'org.greenrobot:greendao:3.2.2'
}

3:创建实体类

image.png
@Entity

@id 后面跟的是自增长的意思,如果需要自增加,设置成Long,调用People的时候,参数填写成Null就可以

@Generated 后面是自动生成的,不用管

这三个是必须要设置的

然后get,set

最后,项目


image.png

就会发现你的项目多了一个文件夹greendao命名的,里面内容不需要动


image.png

这时你的GreenDao就配置成功了

二、工具类

1、DBManager.java

package com.sf.sxjf.database;

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

import com.sf.sxjf.ui.task.bean.DaoMaster;
import com.sf.sxjf.ui.task.bean.DaoSession;

/**
 * Author: yx
 * Description: 数据库初始化类
 */
public class DBManager {
    // 是否加密
    public static final boolean ENCRYPTED = true;
    private Context mContext;
    private static final String DB_NAME = "sxjf.db";
    private static DBManager mDBManager;
    private static DaoMaster.DevOpenHelper mDevOpenHelper;
    private static DaoMaster mDaoMaster;
    private static DaoSession mDaoSession;

    private DBManager(Context context) {
        this.mContext = context;
        // 初始化数据库信息
        mDevOpenHelper = new DaoMaster.DevOpenHelper(context, DB_NAME);//db默认路径/data/data
        getDaoMaster(context);
        getDaoSession(context);
    }
    public static DBManager getInstance(Context context) {
        if (null == mDBManager) {
            synchronized (DBManager.class) {
                if (null == mDBManager) {
                    mDBManager = new DBManager(context);
                }
            }
        }
        return mDBManager;
    }
    /**
     * 获取可读数据库
     *
     * @param context
     * @return
     */
    public static SQLiteDatabase getReadableDatabase(Context context) {
        if (null == mDevOpenHelper) {
            getInstance(context);
        }
        return mDevOpenHelper.getReadableDatabase();
    }

    /**
     * 获取可写数据库
     *
     * @param context
     * @return
     */
    public static SQLiteDatabase getWritableDatabase(Context context) {
        if (null == mDevOpenHelper) {
            getInstance(context);
        }

        return mDevOpenHelper.getWritableDatabase();
    }
    /**
     * 获取DaoMaster
     *
     * @param context
     * @return
     */
    public static DaoMaster getDaoMaster(Context context) {
        if (null == mDaoMaster) {
            synchronized (DBManager.class) {
                if (null == mDaoMaster) {
                    //更新数据库
                    mDaoMaster = new DaoMaster(getWritableDatabase(context));
                }
            }
        }
        return mDaoMaster;
    }

    /**
     * 获取DaoSession
     *
     * @param context
     * @return
     */
    public static DaoSession getDaoSession(Context context) {
        if (null == mDaoSession) {
            synchronized (DBManager.class) {
                mDaoSession = getDaoMaster(context).newSession();
            }
        }

        return mDaoSession;
    }

}

2、BeanDaoOpe.java

package com.sf.sxjf.database.dao;

import android.content.Context;

import com.sf.sxjf.database.DBManager;
import com.sf.sxjf.ui.task.bean.SendTask;
import com.sf.sxjf.ui.task.bean.SendTaskDao;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

/**
 * Author: yx
 * Description: 实体操作类
 */
public class SendTaskDaoOpe {
    /**
     * 添加数据至数据库
     *
     * @param context
     * @param sendTask
     */
    public static void insertData(Context context, SendTask sendTask) {
        DBManager.getDaoSession(context).getSendTaskDao().insert(sendTask);
    }
    /**
     * 将实体列表通过事务添加至数据库
     *
     * @param context
     * @param list
     */
    public static void insertData(Context context, List<SendTask> list) {
        if (null == list || list.size() <= 0) {
            return;
        }
        DBManager.getDaoSession(context).getSendTaskDao().insertInTx(list);
    }
    /**
     * 添加数据至数据库,如果存在,将原来的数据覆盖
     * 内部代码判断了如果存在就update(entity);不存在就insert(entity);
     *
     * @param context
     * @param sendTask
     */
    public static void saveData(Context context, SendTask sendTask) {
        DBManager.getDaoSession(context).getSendTaskDao().save(sendTask);
    }

    /**
     * 将实体列表通过事务添加至数据库,如果存在,将原来的数据覆盖
     * 内部代码判断了如果存在就update(entity);不存在就insert(entity);
     * 根据主键判断
     * @param context
     * @param list
     */
    public static void saveData(Context context, List<SendTask> list) {
        if(null == list || list.size() <= 0) {
            return;
        }
        DBManager.getDaoSession(context).getSendTaskDao().saveInTx(list);
    }

    /**
     * 删除数据至数据库
     *
     * @param context
     * @param sendTask 删除具体内容
     */
    public static void deleteData(Context context, SendTask sendTask) {
        DBManager.getDaoSession(context).getSendTaskDao().delete(sendTask);
    }

    /**
     * 根据id删除数据至数据库
     *
     * @param context
     * @param id      删除具体内容
     */
    public static void deleteByKeyData(Context context, long id) {
        DBManager.getDaoSession(context).getSendTaskDao().deleteByKey(id);
    }

    /**
     * 删除全部数据
     *
     * @param context
     */
    public static void deleteAllData(Context context) {
        DBManager.getDaoSession(context).getSendTaskDao().deleteAll();
    }

    /**
     * 更新数据库
     *
     * @param context
     * @param sendTask
     */
    public static void updateData(Context context, SendTask sendTask) {
        DBManager.getDaoSession(context).getSendTaskDao().update(sendTask);
    }

    /**
     * 查询所有数据
     *
     * @param context
     * @return
     */
    public static List<SendTask> queryAll(Context context) {
        QueryBuilder<SendTask> builder = DBManager.getDaoSession(context).getSendTaskDao().queryBuilder();
        return builder.build().list();
    }

    /**
     * 根据id,其他的字段类似
     *
     * @param context
     * @param masterWaybillNo
     * @return
     */
    public static List<SendTask> queryForMasterWaybillNo(Context context, String masterWaybillNo) {
        QueryBuilder<SendTask> builder = DBManager.getDaoSession(context).getSendTaskDao().queryBuilder();
        /**
         * 返回当前id的数据集合,当然where(这里面可以有多组,做为条件);
         * 这里build.list();与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的;
         * 在QueryBuilder类中list()方法return build().list();
         *
         */
        return builder.where(SendTaskDao.Properties.MasterWaybillNo.eq(masterWaybillNo)).list();
    }

}

3、调用
1)存储

DBManager.getDaoSession(App.getContext()).getSendTaskDao().insertOrReplaceInTx(beanList);

2)查询

List<Bean> queryList = BeanDaoOpe.queryForMasterWaybillNo(App.getContext(), scanResult);

相关文章

网友评论

      本文标题:GreenDao使用

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