1、介绍
MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地
配置和定制。 为了使它更加强大而且易于配置,我们对 MyBatis 3 中的缓存实现进行了许多改进。
默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据
进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
1
当添加上该标签之后,会有如下效果:
映射语句文件中的所有 select 语句的结果将会被缓存。
映射语句文件中的所有 insert、update 和 delete 语句会刷新缓存。
缓存会使用最近最少使用算法(LRU, Least Recently Used)算法来
清除不需要的缓存。
缓存不会定时进行刷新(也就是说,没有刷新间隔)。
缓存会保存列表或对象(无论查询方法返回哪种)的 1024 个引用。
缓存会被视为读/写缓存,这意味着获取到的对象并不是共享的,可以
安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。
在进行配置的时候还会分为一级缓存和二级缓存:
一级缓存:线程级别的缓存,是本地缓存,sqlSession级别的缓存。
二级缓存:全局范围的缓存,不止局限于当前会话。
2、一级缓存的使用
一级缓存是sqlsession级别的缓存,默认是存在的。