package com.greendao.db.base; import java.util.List; import de.greenrobot.dao.AbstractDao; import de.greenrobot.dao.query.QueryBuilder; import de.greenrobot.dao.query.WhereCondition; public abstract class BaseEntityDao<DAO extends AbstractDao<E, K>, E, K>{ public static final boolean DEBUG = true; private DAO mDao; private boolean forCurThread = false; static { if (DEBUG) { QueryBuilder.LOG_SQL = true; QueryBuilder.LOG_VALUES = true; } } public BaseEntityDao() { mDao = initEntityDao(); } public void setForCurThread(boolean curThread) { this.forCurThread = curThread; } protected abstract DAO initEntityDao(); public DAO getEntityDao() { return mDao; } public void insertEntity(E entity) { mDao.insert(entity); } public void deleteEntity(E entity) { mDao.delete(entity); } public void deleteAll() { mDao.deleteAll(); } public void deleteEntityByKey(K key) { mDao.deleteByKey(key); } public List<E> queryEntitiesByKey(K key, boolean asc) { QueryBuilder<E> qb = mDao.queryBuilder().where(mDao.getPkProperty().eq(key), (WhereCondition)null); if (asc) { qb.orderAsc(mDao.getPkProperty()); } else { qb.orderDesc(mDao.getPkProperty()); } if (forCurThread) { return qb.build().forCurrentThread().list(); } else { return qb.list(); } } public E queryEntityByKey(K key) { QueryBuilder<E> qb = mDao.queryBuilder().where(mDao.getPkProperty().eq(key), (WhereCondition)null); if (forCurThread) { return qb.build().forCurrentThread().unique(); } return qb.unique(); } public List<E> queryEntitiesByArgs(WhereCondition ...whereCondition) { if (whereCondition == null || whereCondition.length == 0) { if (forCurThread) { return mDao.queryBuilder().build().forCurrentThread().list(); } return mDao.queryBuilder().list(); } if (forCurThread) { return mDao.queryBuilder().where(null, whereCondition).build().forCurrentThread().list(); } return mDao.queryBuilder().where(null, whereCondition).list(); } public List<E> queryEntities(String where, String... selectionArg) { return mDao.queryRaw(where, selectionArg); } }