实现通用的操作类
上篇中讲了基本的操作,这里来实现通用的数据库操作类
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); } }
GreenDao常用操作(二)
最新推荐文章于 2022-07-01 14:34:18 发布