zoukankan      html  css  js  c++  java
  • Android必知必会--GreenDao缓存

    本篇文章不是介绍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 使用心得
    2. GreenDao

    PS:

    你可以关注的我GithubCSDN微博

  • 相关阅读:
    Hello World!
    Nginx加权轮询算法
    git常用命令
    linux命令
    sql 表值函数与标量值函数
    数据查询和操纵时连接的打开状态
    插入一条和上一条数据关联的数据
    C# 输出24小时格式时间
    c#中用sql存储过程
    AndroidManifest.xml文件解析
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300479.html
Copyright © 2011-2022 走看看