1, 定义统一的Dao接口

public interface IDao<T> {public abstract T getSingleById(int id);public abstract List<T> getAll();public abstract boolean update(T video);public abstract int deleteByIds(Collection<Integer> ids);public abstract boolean delete(T video);public abstract boolean add(T video);public int updateBySQL(String statement, String... arguments);public List<T> getListByFieldAndOrderBy(Map<String, Object> fieldValues,Map<String, Boolean> orderBy);}
2, 定义抽象Dao

public abstract class AbstractDao<T> implements IDao<T> {private Dao<T, Integer> dao;public AbstractDao(Context context, Class<T> clazz) {try {dao = DBHelp.getInstance(context).getDao(clazz);} catch (SQLException e) {e.printStackTrace();}}@Overridepublic T getSingleById(int id) {if (dao == null)return null;try {return dao.queryForId(id);} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic List<T> getListByFieldAndOrderBy(Map<String, Object> fieldValues,Map<String, Boolean> orderBy) {if (dao == null)return null;try {QueryBuilder<T, Integer> qb = dao.queryBuilder();if (orderBy != null) {for (Map.Entry<String, Boolean> entry : orderBy.entrySet()) {qb.orderBy(entry.getKey(), entry.getValue());}}if (fieldValues != null) {Where<T, Integer> where = qb.where();for (Map.Entry<String, Object> entry : fieldValues.entrySet()) {where.eq(entry.getKey(), entry.getValue());}}return qb.query();// return dao.queryForFieldValuesArgs(fieldValues);} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic List<T> getAll() {if (dao == null)return null;try {return dao.queryForAll();} catch (SQLException e) {e.printStackTrace();}return null;}public List<T> getAllOrderBy(String columnName, boolean ascending) {if (dao == null)return null;try {return dao.queryBuilder().orderBy(columnName, ascending).query();} catch (SQLException e) {e.printStackTrace();}return null;}@Overridepublic boolean update(T t) {if (dao == null)return false;try {return dao.update(t) == 1;} catch (SQLException e) {e.printStackTrace();}return false;}public int updateBySQL(String statement, String... arguments) {if (dao == null)return 0;try {return dao.updateRaw(statement, arguments);} catch (SQLException e) {e.printStackTrace();}return 0;}@Overridepublic int deleteByIds(Collection<Integer> ids) {if (dao == null)return 0;try {return dao.deleteIds(ids);} catch (SQLException e) {e.printStackTrace();}return 0;}public boolean deleteAll(String table) {if (dao == null)return false;try {return dao.executeRaw("DELETE FROM " + table) > 0;} catch (SQLException e) {e.printStackTrace();}return false;}@Overridepublic boolean delete(T video) {if (dao == null)return false;try {return dao.delete(video) == 1;} catch (SQLException e) {e.printStackTrace();}return false;}@Overridepublic boolean add(T t) {if (dao == null)return false;try {return dao.createIfNotExists(t) != null;// return dao.create(video) == 1;} catch (SQLException e) {e.printStackTrace();}return false;}}
3, 在逻辑bean里使用很简单:

public class QuestionDao extends AbstractDao<Question> {public QuestionDao(Context context) {super(context, Question.class);}}

4, 使用的时候就很简单了:

QuestionDao dao = new QuestionDao();dao.add(T);...
这样就可以很简单的做CRUD操作了....

更多相关文章

  1. android如何使用menu键
  2. Android(安卓)7.1使用以太网口共享本机4G网络给其他设备
  3. MUI调用自定义插件(Android)
  4. Android中如何使用基于监听的事件处理(上)
  5. Android获取系统的内存使用率
  6. Android使用binder访问service的方式
  7. 箭头函数的基础使用
  8. NPM 和webpack 的基础使用
  9. Python list sort方法的具体使用

随机推荐

  1. 理解Android的context
  2. The application has stopped unexpected
  3. Android AnimationSet详解
  4. Android 代码实现重启
  5. Android Initialization Process
  6. 新sdk(5.0+)eclipse建android工程报错
  7. android使用gridview的书架效果
  8. COCOS2DX 安卓WIN32下配置手册
  9. android腾讯微博吹一吹实现原理
  10. 4、Android(安卓)SDK命令行工具AAPT2