一级缓存
- 默认情况下是开启的,而且是不能关闭的
- 指SqlSession级别的缓存,当在同一个SqlSession中进行相同的SQL语句查询时,第二次以后的查询不会从数据库查询,而是直接从缓存中获取
- 最多缓存1024条SQL
- 缓存使用的数据结构是一个map
- key: MapperId+offset+limit+sql+all parameters
- value: 信息
- 如果两次sql查询中间出现了commit操作(修改,添加,查询),本sql中的一级缓存区域全部清空,下次使用时时需要重新查询的
二级缓存
- 需要配置
- 在mybatis全局配置中启用二级缓存配置
- 对应的Mapper.xml中配置cache节点
- 在对应的select查询节点中添加useCache=true
- 是跨SqlSession的缓存,是mapper级别的,同一个mapper中的SqlSession都可以共享
- 缓存使用的数据结构是一个map
- key: MapperId+offset+limit+sql+all parameters
- value: 信息