Mybatis中关于commit的问题
老师您好,如下是测试类,其他配置都和视频中的源代码一样,并且在在goods.update的标签中我已经设置flushCache=false.我就是想看看更新操作完以后使用commit能否清除二级缓存。但是我发现与理想不符合,结果图中的缓存命中率居然是0.5,不应该啊,更新完的commit不应该清空二级缓存区了吗,为什么还会出现0.5的缓存命中率(也就是说并没有清空二级缓存区)
恳求老师可以把下端代码复制过去进行测试,万分感谢!
@Test
public void testLv1Cache() throws Exception {
SqlSession session1 = null;
try{
session1 = MyBatisUtils.openSession();
Goods goods = session1.selectOne("goods.selectById" , 1603);
goods.setTitle("更新测试商品82");
int num = session1.update("goods.update" , goods);
session1.commit();
Goods goods1 = session1.selectOne("goods.selectById" , 1603);
System.out.println(goods1.getTitle());
System.out.println("------------------------------------------------");
}catch (Exception e){
throw e;
}finally {
MyBatisUtils.closeSession(session1);
}
}结果图

19
收起
正在回答
1回答
同学你好,同学配置时的flushCache="false",表示执行完该sql语句之后,不会清除或刷新缓存。所以即使commit也不会清除缓存的。
同学可以将flushCache设置为"true"再尝试一下。
祝学习愉快~
2023版Java工程师
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星