mybatis一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率
mybatis二级缓存是mapper级别的缓存,根据 mapper的namespace+sqlId作为key缓存数据,二级缓存是跨session的;
一级缓存:
1、客户端获取sqlsession链接,执行查询sql,首先判断sqlsession中是否存在缓存数据,不存在则执行查询sql,存在则直接返回缓存数据;
2、在同一个sqlsession下,执行insert、update、remove,commit时会清空缓存的数据,防止脏读
二级缓存:
1、多个sqlsession共享一个mapper的二级缓存区
2、可以配合使用第三方缓存框架
网友评论