了解mybatis缓存机制
作用: 使用缓存, 我们可以避免频繁的与数据库进行交互, 尤其是在查询越多、缓存命中率越高的情况下, 使用缓存对性能的提高更明显。
缓存种类:mybatis缓存分为一级缓存和二级缓存,默认开启一级缓存,而且不能关闭。
一级缓存作用域:作用域在sqlSession在创建和关闭之间:
一级缓存测试:在一级缓存作用域中,根据相同username查询两次:
输出:
不同的username查询两次:
输出:
结论:在一级缓存作用域中做查询操作,若作用域中存在数据,则直接取出,不走数据库。若没有则走数据库。
一级缓存失效情况:
1.查询不同的东西
2.增删改的操作
3.查询不同的Mapper.xml
4.手动清理缓存
使用二级缓存:
1、mybatis-config.xml文件中开启全局缓存:
<setting name="cacheEnabled" value="true"/>
2、在对应的Mapper.xml文件中加入:
<cache/>
3、sql语句标签中可以使用二级缓存或不使用,默认是使用的。
小结:只要开启二级缓存,使用同个mapper有效;所有数据都会放在一级缓存中;只有当会话提交或关闭才会放到二级缓存中。
自定义缓存:(Ehcache)知道存在这个东西就行。
将来用redis做缓存。