MyBatis
一级缓存是sqlsession级别的缓存
MyBatis 的一级缓存存在于 SqlSession 的生命周期中,在同一个 SqlSession 中查询
时, MyBatis 会把执行的方法和参数通过算法生成缓存的键值,将键值和查询结果存入一个 Map
对象中。如果同一个 SqlSession 中执行的方法和参数完全一致,那么通过算法会生成相同的
键值,当 Map 缓存对象中己经存在该键值时,则会返回缓存中的对象。
强制刷新缓存的方式
<select id=” selectByid” flushCache=” true ” resultMap=’” userMap” >
select * from sys user where 工d = #{id)
flushCache= " true ” ,这个属性配置为 true 后, 会
在查询数据前清空当前的一级缓存,因此该方法每次都会重新从数据库中查询数据
任何的 INSERT 、
UPDATE 、 DELETE 操作都会清空一级缓存
二级缓存是内存缓存,默认是开启的.
启用mybatis自带的二级缓存的步骤
1.开启二级缓存(默认开启)
2.缓存的类实现序列化接口
3.在对应的mapper.xml或者mapper接口中,指明改mapper启用缓存.
MyBatis 的二级缓存是和命名空间绑定的 ,即 二级缓存需要配置在 Mapper. xml 映射文件中 ,
或者配置在 Mapper抖va 接口中。在映射文件中 , 命名空间就是 XML 根节点 mapper 的
namespace 属性 。 在 Mapper 接口中,命名空间就是接口 的全限定名称。
MyBatis 默认提供的缓存实现是基于 Map 实现的内存缓存,己经可以满足基本的应用 。 但
是当需要缓存大量的数据时,不能仅仅通过提高内存来使用 MyBatis 的二级缓存,还可以选择
一些类似 EhCache 的缓存框架或 Redis 缓存数据库等工具来保存 MyBatis 的二级缓存数据 。 接
下来两节,我们会介绍两个常见的缓存框架 。
集成其他缓存:
ehcache
直接mybatis与ehcache集成,不管spring.
配置 EhCache
在 src/main/resources 目录下新增 ehcache.xml 文件 。