mybatis一级缓存
接着上一篇讲, mybatis一级缓存在没有使用事务后,本地看不到效果,查询时还是查询了两次数据库。
如下图所示



//开启事务,在同一个方法(同一个回话,一级缓存才有效果)
@Transactional
public Refund getRefundTest(Long brefundId) {
Refund refundTest = refundMapper.getRefundTest(brefundId);
System.out.println("1111111111:"+refundTest.getBuyerName());
Refund refundTest0 = refundMapper.getRefundTest(brefundId);
System.out.println(refundTest==refundTest0);
System.out.println("2222222222:"+refundTest0.getBuyerName());
return refundTest;
}
加上事务后效果如下:


一级缓存什么时候会被清除
一级缓存的清除主要有以下两个地方:
1、就是获取缓存之前会先进行判断用户是否配置了flushCache=true属性(参考一级缓存的创建代码截图),如果配置了则会清除一级缓存。
2、MyBatis全局配置属性localCacheScope配置为Statement时,那么完成一次查询就会清除缓存。
3、在执行commit,rollback,update方法时会清空一级缓存。
本文来自博客园,作者:余生请多指教ANT,转载请注明原文链接:https://www.cnblogs.com/wangbiaohistory/p/15818265.html

浙公网安备 33010602011771号