MyBatis框架提供了一级缓存和二级缓存
MyBatis框架提供了一级缓存和二级缓存来提高数据库访问性能。
一级缓存是MyBatis默认开启的缓存机制,它是基于会话(SqlSession)级别的缓存。当执行查询语句时,查询结果会被缓存在会话的一级缓存中。如果再次执行相同的查询语句,MyBatis会先检查一级缓存中是否存在相同的查询结果,如果存在则直接返回缓存中的结果,而不再访问数据库。一级缓存的生命周期与会话相同,当会话关闭时,一级缓存也会被清空。
二级缓存是基于命名空间(Mapper)级别的缓存。它可以被多个会话共享,当多个会话执行相同的查询语句时,查询结果会被缓存在二级缓存中。如果再次执行相同的查询语句,MyBatis会先检查二级缓存中是否存在相同的查询结果,如果存在则直接返回缓存中的结果,而不再访问数据库。二级缓存的生命周期与应用程序的运行周期相同,当应用程序关闭时,二级缓存也会被清空。
要启用二级缓存,需要在MyBatis的配置文件中进行相应的配置。可以通过在Mapper接口或映射文件中添加
需要注意的是,一级缓存和二级缓存是独立的,它们并不会自动同步。当执行增删改操作时,会清空一级缓存,并且会清空对应的命名空间下的二级缓存。如果需要在多个会话之间共享缓存,需要手动配置并管理二级缓存的刷新和清空。