1.实现思路:
先根据条件查询到符合条件的数据列表,然后调用deleteInTx;
GreenDaoUtil instance = GreenDaoUtil.getInstance(new GreenDaoContext(mView.getContext(), DbConstant.HAVE_DOWNLOADED_DB));
AnalyzeRecordBeanDao analyzeRecordBeanDao = instance.getDaoSession().getAnalyzeRecordBeanDao();
List<AnalyzeRecordBean>analyzeRecordBeanList=analyzeRecordBeanDao.queryBuilder().where(AnalyzeRecordBeanDao.Properties.UserId.eq(userId),AnalyzeRecordBeanDao.Properties.IsSelect.eq(true)).list(); analyzeRecordBeanDao.deleteInTx(analyzeRecordBeanList);
这样就实现了按照条件删除功能。
2.根据条件查询
greenDaoUtil = GreenDaoUtil.getInstance(new GreenDaoContext(mView.getContext(), DbConstant.NEW_PROJECT_DB)); FilmEnforcementDao filmEnforcementDao = greenDaoUtil.getDaoSession().getFilmEnforcementDao(); QueryBuilder<FilmEnforcement> queryBuilderFilmEnforcement = filmEnforcementDao.queryBuilder()/*.offset(page * ConfigConstant.PAGE) .limit(ConfigConstant.PAGE)*/ .orderDesc(FilmEnforcementDao.Properties.Sbsj) .where(FilmEnforcementDao.Properties.UserId.eq(userId)) .where(FilmEnforcementDao.Properties.Wcd.eq(mView.taskStatus())); if (!TextUtils.isEmpty(mView.getKeyWord())) { queryBuilderFilmEnforcement = queryBuilderFilmEnforcement.whereOr(FilmEnforcementDao.Properties.GeoId.like("%" + mView.getKeyWord() + "%"), FilmEnforcementDao.Properties.Xmmc.like("%" + mView.getKeyWord() + "%")); } List<FilmEnforcement> filmEnforcements = queryBuilderFilmEnforcement .list();
greendao多条件查询一
try { greenDaoUtil = GreenDaoUtil.getInstance(new GreenDaoContext(mView.getContext(), DbConstant.CONFIG_DB)); List<MessageBean> notReadMessageBeanList = greenDaoUtil.getDaoSession().getMessageBeanDao().queryBuilder() .where(MessageBeanDao.Properties.HaveRead.eq(true)) // .where(MessageBeanDao.Properties.IsReturn.eq(true)) .where(MessageBeanDao.Properties.TaskRemark.isNotNull()) .orderDesc(MessageBeanDao.Properties.PushTime).list(); } catch (Exception e) { Log.d(TAG, "getNotReadList: 查询未读消息失败"); }
greendao多条件查询二
查询过程中,有时候查询条件是多个的,且动态组合的takeDataSourceList和taskDataTypeList就是条件组合后的结果 try { greenDaoUtil = GreenDaoUtil.getInstance(new GreenDaoContext(mView.getContext(), DbConstant.CONFIG_DB)); WhereCondition foundTypeWhereCondition = MessageBeanDao.Properties.TaskDataSource.in(takeDataSourceList); WhereCondition businessTypeWhereCondition = MessageBeanDao.Properties.TaskDataType.in(taskDataTypeList); WhereCondition higherReturnWhereCondition; if (higherReturn) { higherReturnWhereCondition = MessageBeanDao.Properties.TaskRemark.isNotNull(); } else { higherReturnWhereCondition = MessageBeanDao.Properties.TaskRemark.isNull(); } List<MessageBean> readMessageBeanList = greenDaoUtil.getDaoSession().getMessageBeanDao().queryBuilder() .where(foundTypeWhereCondition) .where(businessTypeWhereCondition) .where(MessageBeanDao.Properties.HaveRead.eq(haveRead)) .where(higherReturnWhereCondition) .orderDesc(MessageBeanDao.Properties.PushTime).list(); if (haveRead) { mView.setReadList(readMessageBeanList); } else { mView.setNotReadList(readMessageBeanList); } } catch (Exception e) { Log.d(TAG, "getNotReadList: 查询未读消息失败"); }