Mybatis使用的过程中,每次使用Mybatis开启一次和数据库的会话操作的时候,Mybatis就会创建出一个​​SqlSession​​对象来表示一次数据库会话。

在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次 查询都会查询一次数据库,而我们在极短是时间内做了完全相同的查询,那么它们的结果极有可能完全相同,由于查询一次数据库的代价很大,这有可能造成很大的资源浪费。

为了解决这一问题,减少资源的浪费,Mybatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果缓存起来,当下次查询的时候,如果判断先前有一个完全一样的查询,会直接从缓存汇总直接将结果取出来,返回给用户,不需要再次进行一次数据库的查询操作了。

Mybatis会在一次会话的表示————>一个SqlSession对象中创建一个本地缓存(local cache),对于每一次查询,都会尝试根据查询的条件去本地缓存中查找是否在缓存中,如果在缓存中,就直接从缓存中取出,然后返回给用户;否则,从数据库读取数据,将查询结果存入缓存并且返回给用户。

   对于会话(Session)级别的数据缓存,我们称之为一级数据缓存,简称一级缓存。