GreenDao常用操作(二)
来源:互联网 发布:练配音的软件 编辑:程序博客网 时间:2024/05/16 11:08
实现通用的操作类
上篇中讲了基本的操作,这里来实现通用的数据库操作类
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); }}
0 0
- GreenDao常用操作(二)
- GreenDao常用操作(一)
- 常用oracle操作(二)
- Android GreenDao常用注解
- android greenDao(二)
- GreenDao 使用教程 二
- GreenDao进阶篇(二)
- greenDao orm 进阶 <二>
- greenDao使用方法二
- GreenDao的使用说明(二)
- Greendao操作数据库
- GreenDao简单操作
- mysql常用的操作(二)
- MongoDB常用操作(二)
- Git 常用操作(二)
- Mysql常用操作(二)
- android_orm框架之greenDAO(二)
- GreenDao深度探索(二)
- [Java基础知识]开发环境以及JDK的安装与配置
- hdu1087 Super Jumping! Jumping! Jumping!
- Struts2数据校验
- Search in Rotated Sorted Array II
- mysql分表和表分区详解
- GreenDao常用操作(二)
- 删除一个非空目录
- foreach
- s5p4418-linux MMC驱动子系统分析
- Java中的字符串常量池详细介绍
- HDU3033(分组背包)
- mysql 安装 同步备份
- 范围最小值查询 RMQ (Range Minimum Query)
- 音视频同步原理[ffmpeg]