MyBatis的缓存机制
缓存在实际开发项目中是非常重要的,我们开发一款产品对客户而言最终要的就是用户体验,当客户使用一款产品的时候除了最直观的的界面,接下来就是获取数据了,当获取数据十分缓慢,那么这个产品的用户体验就是很差的,也可以说这个产品是失败的,而常用的SSM框架中Mybatis就提供了缓存机制来缓存数据,它分为一级缓存(sqlswssion级)和二级缓存(mapper级):
- 一级缓存(sqlswssion级)
使用一级缓存的时候在操作数据库的时候,我们需要构造SqlSession对象,存储数据利用的是对象中的HashMap.
那么缓存是如何来实现数据库性能的呢:当我们在同一个SqlSession对象中执行多次相同的sql语句,第一次执行会去数据库查找,完成之后会将查询到的数据保存到缓存中,当第二次执行相同查询时,就直接从缓存中读取数据,而不会在对数据库查询从而提高了效率,当执行DML操作时,SqlSeeion中缓存的数据会被清空,这是为了保证缓存中的数据是最新的,避免脏数据
注意:
Mybatis的缓存机制是基于id进行缓存的,以HashMap为容器,以对象的id作为key,对象作为value。
- 示例
假设有一个用户表t_user,我们向里面插入几条数据:aaa,男,22;bbb,男,19;ccc,男