• mybatis缓存


    缓存,就是在内存中开辟的一块内存区,暂时的存取数据,提高效率。在mybatis中,将查询到的数据暂时的放到缓存中,这样下次使用时就可以直接使用缓存中的数据,不用再查询数据库。

    一级缓存

    在mybatis中,一级缓存是默认开启的,它只存在一次sqlsession会话中,会话关闭时,一级缓存也就关闭了,举例说明:

    为了方便查看,配置mybatis的日志文件,在控制台打印日志文件

    上面方法执行结果:

    以及缓存的内容只在当前这个sqlSession中有效,当这个sqlSession会话关闭时,缓存就没有了,也可以通过清空缓存操作来清空缓存:

    结果如下:

    可以看出,清空缓存后,缓存中没有数据,所以查询了两次数据库,跟上面的作比较的话,就可以发现,上面的第二次查询是查询了缓存中的数据,而下面的因为清空了缓存,所以两次都是查询的数据库。

    二级缓存

    一级缓存是默认开启的,二级缓存开启需要在mybatis的配置文件中,配置允许二级缓存,同时还要再mapper文件中,开启二级缓存:

    在mapper中开启二级缓存:

    只需要这样就行了,它采用了默认的配置,也可以进行设置配置:

    在之前了解到一级缓存只存在一次会话中,会话结束,缓存就清空了, 二级缓存是面向全局的,每一个mapper文件都对应一个缓存, 它可以被别的会话调用

    开启不同的会话,查询结果如下:

    可以看出,仍是只查询了一次数据库,第二次虽然不是一次会话,但是二级缓存,可以被不同的会话调用。

    需要注意的是:

    1.使用二级缓存需要序列化实体,即实体需要实现Serializable,如图:

    2.二级缓存是事务性的。这意味着,当 SqlSession 完成并提交时,或是完成并回滚,但没有执行 flflushCache=true 的insert/delete/update 语句时,缓存会获得更新

     自定义缓存:

     自定义缓存需要在mapper文件的cache标签中添加type,如图:

    但是要自己定义一个缓存类同时必须实现cache接口:

  • 相关阅读:
    熟悉常用的HBase操作,编写MapReduce作业
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    leetcode
    归并排序
    选择排序法
  • 原文地址:https://www.cnblogs.com/Zs-book1/p/11271036.html
Copyright © 2020-2023  润新知