概述 MyBatis的查询缓存分为一级缓存和二级缓存 一级缓存是SqlSession级别的缓存 二级缓存是mapper级别的缓存 二级缓存是多个SqlSession共享的。MyBatis通过缓存机制减轻数据压力,提高数据库性能。 一级缓存 一级缓存的作用域是SqlSession范围的,当在同一个SQLSession中执行两次相同的sql语句时,第一次执行完毕会将数据库中查询的数据写到缓存(内存)中,第二次查询时会从缓存中获取数据,不再去底层进行数据库查询,从而提高了查询效率 需要注意的是:如果SqlSession执行了DML操作(insert、update、delete),并执行commit()操作,Mybatis则会清空SQLSession中的一级缓存,这样做的目的是未来保存缓存中存储的是最新的信息,避免出现脏读现象。 当一个SqlSession结束后该SQLSession中的一级缓存也就不存在了,Mybatis默认开启一级缓存,不需要进行任何配置 二级缓存 二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的SqlSession两次执行相同的namespace的下的sql语句,且向sql中传递的参数也相同,即最终执行相同的sql语句,则第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次查询时会从缓存中获取数据,不再去底层数据库查询,从而提高查询效率 Mybatis默认没有开启二级缓存,需要在setting全局参数中配置开启二级缓存 开启二级缓存
注:cacheEnabled的value为true表示在此配置文件下开启二级缓存 来源:https://www./content-4-383151.html |
|