ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
本篇文章不是介绍GreenDao的配置和基础使用,仅仅记录一下GreenDao缓存的问题,下面是示例: ## 场景重现 ~~~ //第一次查询 List chats = daoSession.getChatSessionDao() .queryBuilder() .orderDesc(ChatSessionDao.Properties.Updatetime) .list(); //对数据库中的一条数据进行更新: ChatSession cs = chats.get(0); Log.d("body",cs.getBody()); cs.setBody(cs.getBody() + "new"); daoSession.getChatSessionDao().update(cs); //第二次查询 List chats = daoSession.getChatSessionDao() .queryBuilder() .orderDesc(ChatSessionDao.Properties.Updatetime) .list(); Log.d("body",chats.get(0).getBody()); ~~~ 结果发现两次的`body`的值是一样的,使用工具查看Sqlite数据库,发现`body`的值已经变化了,也就是说,我们第二次查询并没有真正执行,返回的是第一次查询的结果。如果要解决缓存问题,这里就要用到`DaoSession`的一个方法: ~~~ DaoSession.clear(); ~~~ 在示例代码中应该写在第二次查询前面 ~~~ daoSession.clear(); //第二次查询 ...... ~~~ PS:这个清理缓存的方法,会清除所有表的缓存,目前没有发现可以清除单个表或者某个查询的缓存的方法。 ## GreenDao配置与使用 GreenDao详细的配置和Demo可以参考: 1. [ORM 框架之 greenDAO 使用心得](http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0727/3223.html) 1. [GreenDao](http://wiki.xby1993.net/doku.php?id=greendao)