1.mybatis的一级缓存
mybatis的一级缓存是sqlsession级别的,即通过同一个sqlsession查询的数据会被缓存,
再次从通过一个sqlsession中查询数据会从缓存中获取。不会从数据库中获取,不同的sqlsession对应不同的一级缓存
任何增删改都会使一级缓存清空,也可以手动清空
2.mybatis二级缓存
二级缓存是sqlsessionfactory级别,通过同一个sqlsessionfactory创建的sqlsession会被缓存,此后再次查询结果,结果会从缓存中查出
但是二级缓存默认是关闭的,
二级缓存开启的条件:
在核心配置文件中设置全局配置cacheEnabled=”true“,默认为true。
在映射文件中设置标签<cache/>
二级缓存必须在sqlsession关闭提交之后有效
查询的数据所转换的实体类类型必须实现序列化的接口
使二级缓存失效的情况:
两次查询中间的任何增删改都会使得一级缓存和二级缓存失效。因为更新了数据,缓存有可能会错误。