Android项目-高考作文-使用ORMLite抽象公共的Dao层
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(); } } @Override public T getSingleById(int id) { if (dao == null) return null; try { return dao.queryForId(id); } catch (SQLException e) { e.printStackTrace(); } return null; } @Override public 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; } @Override public 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; } @Override public 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; } @Override public 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; } @Override public boolean delete(T video) { if (dao == null) return false; try { return dao.delete(video) == 1; } catch (SQLException e) { e.printStackTrace(); } return false; } @Override public 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操作了....
Android项目-高考作文-使用ORMLite抽象公共的Dao层的更多相关文章
- Android项目-高考作文功能简介(一)
前言 : 开发安卓也已2年多了近3年了, 在自己刚入行的时候就有自己独立开发一个App的想法. 后来自己做了<<高考作文>>这一App. 后面续续断断的维护者. 也因为功能简 ...
- Android项目-高考作文-抽象BaseAdapter
1, 在使用baseAdapter的时候,总是有需要重复的代码如: @Override public int getCount() { return list.size(); } @Override ...
- Android项目-高考作文项目架构(二)
1, 普通的http json请求 请看下面架构草图: 这样就抽象出了其他Activity可能需要的Http Json请求的功能. 只要其他Activity有Http Json请求的需求都可以继承Ba ...
- Android项目-高考作文-AsyncTask的不足
1, AsyncTask的不足. 从android4.0开始, 后台只允许一个AsyncTask执行, 如果当前的AsyncTask没有执行完毕, 那么当前的请求一直处于等待状态. 直到上一个执行完毕 ...
- Android项目-高考作文项目架构(三)
上一篇我们讲到了, Http Json的功能的抽取. 如果我们请求的是一个列表的数据呢? 我们使用那个功能就不是很好. 因为一个列表, 还有很多其他功能(比如每个listView都需要setAdap ...
- SSH 项目中 用Hibernate底层 简单的封装DAO层
废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends Hiberna ...
- Android项目实战(二十五):Android studio 混淆+打包+验证是否成功
前言: 单挑Android项目,最近即时通讯用到环信,集成sdk的时候 官方有一句 在 ProGuard 文件中加入以下 keep. -keep class com.hyphenate.** {*;} ...
- Android项目结构 以及体系结构
学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src 主要是 源 ...
- Ant自动编译打包&发布 android项目
Eclipse用起来虽然方便,但是编译打包android项目还是比较慢,尤其将应用打包发布到各个渠道时,用Eclipse手动打包各种渠道包就有点不切实际了,这时候我们用到Ant帮我们自动编译打包了. ...
随机推荐
- 剖析Vue原理&实现双向绑定MVVM
转自:http://www.w3cmark.com/2016/496.html 本文能帮你做什么? 1.了解vue的双向数据绑定原理以及核心代码模块 2.缓解好奇心的同时了解如何实现双向绑定 为了便于 ...
- Mac 上Tomcat装载
I recently installed Tomcat 7 and got it working with Eclipse Helios on Mac OSX Lion.Install Homebre ...
- WPF TextBlock 判断 isTextTrimmed 文本是否超出
WPF TextBlock 设置TextTrimming情况下 判断 isTextTrimmed(Text 文本是否超出 是否出现了省略号) private bool HasTextTrimmed(T ...
- python学习之路基础篇(第六篇)
一.算法 冒泡排序 两两比较 打的沉下去,小的浮上来 从而把数字从小到大排列出来 选择排序 随机取一个索引作为最大值,然后和列表中的其他索引进行比较,如果l[0]<l[1],则将l[1]修改为 ...
- 牛客网编程练习之PAT乙级(Basic Level):1041 说反话
直接分隔取反即可 AC代码: import java.util.Scanner; /** * @author CC11001100 */ public class Main { public stat ...
- MAC下用homebrew安装及配置apache、php和mysql
我们用到php运行环境的时候总喜欢用集成包,其实在mac下,用homebrew也可以很快的安装这些东西,配置也很简单. homebrew homebrew是mac下的一个包安装管理工具,使用非常简单方 ...
- 作业02-Java基本语法与类库
1. 本周学习总结 以几个关键词描述本周的学习内容.并将关键词之间的联系描述或绘制出来. 原则:少而精,自己写.即使不超过5行也可,但请一定不要简单的复制粘贴. 2. 书面作业 1. String-使 ...
- android 获取栈顶activty的方法总结(兼容API 5.0)
声明:本文为Dujinyang CSDN原创投稿文章,未经许可,禁止任何形式的转载. 最近5.0\6.0\7.0 安卓系统都陆续上岗了,兼容性和代码更新是个很头疼的问题,这次我们来说下TASK的基础和 ...
- Android开发学习之路--性能优化之布局优化
Android性能优化方面也有很多文章了,这里就做一个总结,从原理到方法,工具等做一个简单的了解,从而可以慢慢地改变编码风格,从而提高性能. 一.Android系统是如何处理UI组件的更新操作的 ...
- android Spinner控件详解
Spinner提供了从一个数据集合中快速选择一项值的办法.默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner ...