mybatis--()二级缓存

1 什么是查询缓存

mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。

mybaits提供一级缓存,和二级缓存。

 

 

一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。(mybatis默认支持一级缓存,不需要在配置文件去配置。)

 

二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

 

为什么要用缓存?

如果缓存中有数据就不用从数据库中获取,大大提高系统性能。


2.开启二级缓存

mybaits的二级缓存是mapper范围级别

1.在核心配置文件SqlMapConfig.xml中加入(可略)




cacheEnabled对在此配置文件下的所有cache 进行全局性开/关设置,默认值true,所以不配置也可


2.在UserMapper.xml中开启二缓存,UserMapper.xml下的sql执行完成会存储到它的缓存区域(HashMap)。

3.对应的pojo实现序列化(implements Serializable)




3.二级缓存配置

1.设置useCache=false可以禁用当前select语句的二级缓存,即每次查询都会发出sql去查询,默认情况是true,即该sql使用二级缓存。