MyBatis的二级缓存是指缓存在SqlSessionFactory级别的缓存,可以被多个SqlSession共享。
其原理如下:
当一个查询语句被执行时,MyBatis会首先检查二级缓存中是否存在相应的缓存数据,如果存在,则直接返回缓存结果。
如果二级缓存中不存在相应的缓存数据,则会去数据库中执行相应的查询语句,并将查询结果缓存到二级缓存中。
当其他SqlSession执行相同的查询语句时,会先检查二级缓存中是否存在相应的缓存数据,如果存在,则直接返回缓存结果,而不再去数据库中执行查询语句。
当对数据库中的数据进行新增、修改、删除等操作时,会清空相应的二级缓存数据,以保证缓存数据的一致性。
需要注意的是,MyBatis的二级缓存是默认开启的,但并不是所有的查询语句都适合使用二级缓存。对于频繁变动的数据,或者对数据一致性要求较高的场景,建议禁用二级缓存。可以通过在映射文件中的