Mybatis_缓存知识

应用程序与数据库进行交互,相对耗时,通过缓存查询结果,可以在一定程度上减少此耗时。

 


 

在SQL映射文件中,一个select标签对应的一个statement对象。(以下session指的是SqlSession,factory指的是SqlSessionFactory)


 

一级缓存

Mybatis是默认开启一级缓存的。

即Session缓存,同一个session对象执行同一个statement对象时,会优先从缓存中读取。

 

注意:就算标签内查询语句相同,如果不是同一个标签,即不为同一个statement对象,则不会在缓存中查到。


 

二级缓存

在factory层面的缓存。

通过某个factory创建的session对象,在它commit或者close之后,会把自己的缓存提交给factory缓存。

此时同一个factory创建的其它session对象就能够读取这些缓存。

 

注意:当session对象未提交或关闭时,不会把自己的缓存提交到factory缓存中。

开启二级缓存:

  在sql映射文件中使用标签cache,设置readOnly属性为true。

<cache readOnly="true"></cache>

 

posted @ 2023-02-20 00:29  在博客做笔记的路人甲  阅读(16)  评论(0编辑  收藏  举报