首页 > 代码库 > mybatis的sql 缓存,去除mybatis缓存
mybatis的sql 缓存,去除mybatis缓存
第二次用到mybaits,还是被同一个问题坑了几个小时,所以一定要把这个问题分享给大家。网友很多都是说了一大堆的配置,都是在mybatis.xml中配置。但是,我是没有用mybatis.xml的,我的配置都是在每个**mapper.xml中配置,无非就是一个关联实体类的路径,和一个别名。
在mybatis框架中,在SqlSession未关闭之前,在一个session里面,如果执行相同的select语句,mybatis不会重新查询数据库,而是直接返回缓存在内存中的查询结果,这个是与MyBatis的Cache配置无关的,更改配置文件不起作用,要调用SqlSession.clearCache()函数才可以。
个人理解clearCache清理的是所谓的一级缓存,是在执行insert,update,delete方法后会主动的执行清理。这个缓存是有mybatis自己进行维护的。因此一般是不需要手工进行处理的。
那么你应该是使用了二级缓存导致你所描述的问题。即你在**mapper.xml中使用的了<cache/>标签。使用该标签后,默认开启mybatis的二级缓存,所以在你查询过程中即使你使用session.clearCache()清理了一级缓存(Local Cache )那么,二级缓存中还是存在。
所以把**mapper.xml中的 <cache />标签,去掉即可。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。