GreenDao常用操作(二)
2015-12-04 18:59
351 查看
实现通用的操作类
上篇中讲了基本的操作,这里来实现通用的数据库操作类
1.使用方法
2.工具类代码如下
上篇中讲了基本的操作,这里来实现通用的数据库操作类
1.使用方法
Person person = new Person(); person.setName("zhangsan"); person.setAddress("shanghai"); PersonDao dbDao = BaseApplication.getDaoSession(this).getPersonDao(); DBOperator<PersonDao, Person> dbOperator = new DBOperator<PersonDao, Person>(dbDao, BaseApplication.getDaoSession(this)); dbOperator.insertData(person);
2.工具类代码如下
public class DBOperator<T extends AbstractDao, E> { public T mCustomDao; public DaoSession mDaoSession; public DBOperator(T customDao, DaoSession daoSession) { this.mCustomDao = customDao; this.mDaoSession = daoSession; } /** * 插入一条数据 */ public long insertData(E e) { return mCustomDao.insert(e); } /** * 插入多条数据 */ public void insertDatas(final ArrayList<E> e) { mDaoSession.runInTx(new Runnable() { @Override public void run() { for (int i = 0; i < e.size(); i++) { E item = e.get(i); mCustomDao.insert(item); } } }); } /** * 修改一条数据,根据id来匹配的 */ public void updateData(E e) { mCustomDao.update(e); } /*** * 插入或替换数据 * @param e */ public void insertOrUpdate(E e){ try{ mCustomDao.insertOrReplace(e); }catch (Exception ex){ ex.getStackTrace(); } } /** * 修改一条数据,根据id来匹配的 */ public void updateDataByField(E e, Property fieldName, String fieldValue, String sql) { E result = getItemByField(fieldName, fieldValue); if(result!=null){ mCustomDao.getDatabase().execSQL(sql); }else{ mCustomDao.insert(e); } } public static String getUpdateSql(String tableName, String[] allColumns, String[] columnsValue, String[] condition, String[] conditionValue){ String quotedTablename = '"' + tableName + '"'; StringBuilder builder = new StringBuilder("UPDATE "); builder.append(quotedTablename).append(" SET "); int length = allColumns.length; for (int i = 0; i < length; i++) { String columnName = allColumns[i]; String columnValue = columnsValue[i]; builder.append(columnName).append(" = ").append("\'"+columnValue+"\'"); } builder.append(" WHERE "); int confitionLength = condition.length; for (int j = 0; j < confitionLength; j++) { String key = condition[j]; String Value = conditionValue[j]; if(j!=0){ builder.append(" and "); } builder.append(key).append(" = ").append("\'"+Value + "\'"); } return builder.toString(); } /** * 查询所有数据 */ public ArrayList<E> getAllData() { return (ArrayList<E>) mCustomDao.loadAll(); } /** * 根据Tid获取单条数据 */ public E getItemByTid(String tid) { ArrayList<E> list = (ArrayList<E>) mCustomDao.queryRaw(" tid = ? ", tid); if(list!=null){ if(list.size()>0){ return list.get(0); } } return null; } /** * 根据某个字段获取单条数据 */ public E getItemByField(Property fieldName, String fieldValue) { QueryBuilder qb = mCustomDao.queryBuilder(); qb.where(fieldName.eq(fieldValue)); List list = qb.list(); if(list!=null){ if(list.size()>0){ return (E) list.get(0); } } return null; } /** * 根据ID获取一条数据 * @param id * @return */ public E getItemByID(long id){ return (E) mCustomDao.load(id); } /** * 删除表中所有数据 */ public void deleteAllData(){ mCustomDao.deleteAll(); } /** * 根据id删除一条数据 */ public void deleteItemByID(long id){ mCustomDao.deleteByKey(id); } public void deleteItemByTid(String tid){ QueryBuilder<E> mqBuilder = mCustomDao.queryBuilder(); mqBuilder.where(IllnessDBDao.Properties.Tid.eq(tid)); List<E> chatEntityList = mqBuilder.build().list(); mCustomDao.deleteInTx(chatEntityList); } }
相关文章推荐
- Webview里JS跳转到Activity页面
- 深度学习与计算机视觉系列(4)_最优化与随机梯度下降
- android-UI组件实例大全(一)------TextView文本框
- centos最新版solr5.3.1安装和数据整理以及遇到的问题解答
- 37、重分布配置实验之双点双向重分布
- 程序员的VIM配置
- android view类的xml属性,相关的方法与说明
- Linux学习篇之---scp命令
- 音视频同步原理[ffmpeg]
- 第十四周项目2二叉树排序树中查找的路径
- Java中的字符串常量池详细介绍
- mysql 安装 同步备份
- Android NDK and OpenCV Development With Android Studio
- 阅读源码利器—ctags的安装和配置
- mysql分表和表分区详解
- Search in Rotated Sorted Array II
- 删除一个非空目录
- foreach
- php 实现发送微信模板消息(转)
- python培训Day6 随笔