查询:
普通查询:
QueryBuilder qb = user.queryBuilder();
//id在20到25之间的数据
qb.where(qb.and(UserInfoDao.Properties.Id.gt(20), UserInfoDao.Properties.Id.lt(25)));
List users = qb.list();
可用的方法:
- eq():==
- noteq():!=
- gt(): >
- lt():<
- ge:>=
- le:<=
- like():包含
- between:俩者之间
- in:在某个值内
- notIn:不在某个值内
- limit(int): 限制查询的数量;
- offset(int): 每次返回的数量; offset不能单独使用;
Session
在同一个session中如果一个entities已经被session记录那么下一次再次操作该实体时,greenDao会先从内存中查找,如果内存中没有再去数据库中查找。这样一方面就极大的提高greenDao的查询效率,另一方面也是需要特别注意的是当entities更新过 greenDao仍然会从内存中取出旧值,所以如果entities更新过,需要去调用daoseesion.clear()方法清除缓存后才能查到最新值,否则查询到的将还是保存在内存中的值。
//清除所所有的缓存
daoSession.clear();
//清除指定Dao类的缓存
projectDao = daoSession.getNoteDao();
projectDao.detachAll();