Mybatis 的一级、二级缓存
Mybatis提供了两级缓存来提高查询效率,分别是一级缓存和二级缓存。
一级缓存是SqlSession级别的缓存,它默认是开启的。在同一个SqlSession中,如果查询语句相同,那么第一次查询的结果会缓存下来,以后再次查询相同的语句时,就可以直接从缓存中获取结果,避免了重复查询数据库,提高了查询效率。
二级缓存是mapper级别的缓存,可以跨SqlSession使用,即多个SqlSession共享同一个mapper的二级缓存。当多个SqlSession对同一个mapper进行操作时,第一个SqlSession查询时将结果放入缓存中,其他SqlSession在查询同样的结果时,就可以直接从缓存中获取,避免了重复查询数据库,提高了查询效率。
需要注意的是,二级缓存的使用需要手动配置开启,并且只有查询操作才会使用缓存,对数据进行更新、插入或删除操作时,会刷新缓存,确保缓存中的数据是最新的。
Mybatis的缓存实现方式是通过HashMap来存储缓存数据的,因此在使用缓存时需要考虑缓存的大小,避免因缓存过大导致内存溢出等问题。