前言:一下皆是个人观点,期待各位大佬的指正
今天看了下mybatis的缓存,发现其实这个缓存基本可以说是没有用的
为什么没有用呢?
首先:MyBatis分为一级缓存和二级缓存
一级缓存:存在于SqlSession的生命周期中,什么是SqlSession的生命周期呢,简单的来说,只有同一个请求才会是同一个SqlSession,那么就是说只有同一个请求我查询第二次这个缓存才会生效,那么同一个请求查询两次,那么我就认为你这个代码可能写的有问题,所以一级缓存其实完全没有用处。
二级缓存:存在于SqlSessionFactory 的生命周期中,可以理解为跨sqlSession;缓存是以namespace为单位的,不同namespace下的操作互不影响,但是在多人开发的环境下,我的不同的namespace完全是有可能操作同一张表的,那么会导致一个namespace的数据修改了一张表,但是另一个namespace的那张表的数据缓存没被修改,这样查询的数据就会错误!!!这个还是单节点,集群环境的话,这个问题可能更严重,所以二级缓存是不能使用的