GreenDao使用简单封装

上一节讲了如何在项目中导入GreenDao,以及创建实体类,本节介绍数据库的增删改查。

1、创建一个DbCore 获取DaoMaster和DaoSession对象
public class DbCore {

// private static final String DEFAULT_DB_NAME = “default.db”;
private static DaoMaster daoMaster;
private static DaoSession daoSession;

private static Context mContext;
private static String DB_NAME;

public static void init(Context context) {
    init(context, Constant.DB_NAME);
}

public static void init(Context context, String dbName) {
    if (context == null) {
        throw new IllegalArgumentException("context can't be null");
    }
    mContext = context.getApplicationContext();
    DB_NAME = dbName;
}

public static DaoMaster getDaoMaster() {
    if (daoMaster == null) {
        DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(mContext, DB_NAME, null);
        daoMaster = new DaoMaster(helper.getWritableDatabase());
    }
    return daoMaster;
}

public static DaoSession getDaoSession() {
    if (daoSession == null) {
        if (daoMaster == null) {
            daoMaster = getDaoMaster();
        }
        daoSession = daoMaster.newSession();
    }
    return daoSession;
}

public static void enableQueryBuilderLog(){

    QueryBuilder.LOG_SQL = true;
    QueryBuilder.LOG_VALUES = true;
}

}
在Application中调用 DbCore.init(this);

2、创建一个BaseService,提供增删改查等数据库操作

private AbstractDao<T, K> mDao;


public BaseService(AbstractDao dao) {
    mDao = dao;
}


public void save(T item) {
    mDao.insert(item);
}

public void save(T... items) {
    mDao.insertInTx(items);
}

public void save(List<T> items) {
    mDao.insertInTx(items);
}

public void saveOrUpdate(T item) {
    mDao.insertOrReplace(item);
}

public void saveOrUpdate(T... items) {
    mDao.insertOrReplaceInTx(items);
}

public void saveOrUpdate(List<T> items) {
    mDao.insertOrReplaceInTx(items);
}

public void deleteByKey(K key) {
    mDao.deleteByKey(key);
}

public void delete(T item) {
    mDao.delete(item);
}

public void delete(T... items) {
    mDao.deleteInTx(items);
}

public void delete(List<T> items) {
    mDao.deleteInTx(items);
}

public void deleteAll() {
    mDao.deleteAll();
}


public void update(T item) {
    mDao.update(item);
}

public void update(T... items) {
    mDao.updateInTx(items);
}

public void update(List<T> items) {
    mDao.updateInTx(items);
}

public  T query(K key) {
    return  mDao.load(key);
}

public List<T> queryAll() {
    return mDao.loadAll();
}

public List query(WhereCondition condition) {

    return mDao.queryBuilder().where(condition).list();
}

public List<T> query(WhereCondition condition,WhereCondition... condMore) {

    return mDao.queryBuilder().where(condition,condMore).list();
}
//List<Card> query1 = mCardService.query("where NUM=?", c.getNum());
public List<T> query(String where, String... params) {

    return mDao.queryRaw(where, params);
}

public QueryBuilder<T> queryBuilder() {

    return mDao.queryBuilder();
}

public long count() {
    return mDao.count();
}

public void refresh(T item) {
    mDao.refresh(item);

}

public void detach(T item) {
    mDao.detach(item);
}

}
3、为每一个表创建一个Service,继承BaseService,通过各自的service操作表
public class CategoryService extends BaseService

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值