为什么使用缓存?
对于经常执行查询而不经常更改的数据,每次查询都需要与数据库进行交互,因此效率会大幅降低。 缓存的优点是使用缓存将经常执行查询的数据存储在内存中,而对结果影响不大,从而减少与数据库的交互并提高效率。
mybatis中的一级缓存
一级缓存是指mybatis中SQLSession对象的缓存
执行查询操作时,查询结果保存在SqlSession提供的区域中。 此区域是映射结构,当您再次检查相同的数据时,mybatis会先去SQLSession中查找。 有的话直接拿来使用。 当SQLSession消失时,一级缓存也将消失
如何清空缓存?
使用SqlSession对象执行clearCache (方法SqlSession.clearCache );
注意 :
看了之后,您可能会怀疑,如果在两次查询一个数据时中途修改了该数据,第二次查询的结果是否会得到修改? 我能回答。 在mybatis中,不仅在使用clearCache ()、close )方法时,而且在清空缓存、添加、删除、修改数据、commit ()、close ()时,都是主缓存
mybatis中的二级缓存
l2缓存是mybatis中SqlSessionFactory对象的缓存,由同一SqlSessionFactory对象创建的SqlSession共享该缓存。
配置步骤:
另一方面,在配置文件config.xml中,将mybatis设置为支持使用辅助缓存settings标签中的cacheEnabled value设置为true
二.打开映射配置文件以支持辅助缓存和cache/标签
三、让当前操作支持二级缓存。 即,在选择标签上附加useCache='true '
(如果使用注释方法,请在Dao的类名中添加@cachenamespace(blocking=true )注释。)
注意
mybatis的l2缓存SqlSessionFactory存储的是数据而不是对象