Mybatis二级缓存初探

来源:互联网 发布:软件属性英文 编辑:程序博客网 时间:2024/05/29 05:09

首先,要开启缓存:

<setting name="cacheEnabled" value="true" />
然后,使用二级缓存:

<!-- 缓存一分钟 --><cache flushInterval="60000" readOnly="true"/>
使用就这么简单。


但是,本文的目的不是使用,而是要看下使用的效果。

先看看配置了缓存的mapper中都配置了什么语句:

一个查询所有的语句:

<select id="findAll" resultType="account">select * from account</select>
一个保存的语句:

<insert id="save" parameterType="account" useGeneratedKeys="true" keyProperty="id">insert into account(username,status) values(#{username}, 0)</insert>
对此,我们可以测试findAll是否有利用上缓存了,以及save语句对缓存的影响。(记得日志先开启DEBUG)

首先,我们先通过请求,调用到save语句,实现插入几条数据,过程就省略不说了。

第二步,我们调用findAll的查询请求,如下:

http://localhost/account/findAll.action
得到的结果(这里比较简单,直接转json输出了):

[{"id":1,"status":0,"username":"123456"},{"id":2,"status":0,"username":"654321"},{"id":3,"status":0,"username":"test4"},{"id":4,"status":0,"username":"test4"},{"id":5,"status":0,"username":"test4"},{"id":6,"status":0,"username":"test4"}]
可以看到,这里有6条数据。

再看控制台输出:

生成查询语句了,这是第一次。
第三步,我们刷新一下,第二次查询,结果自然是一样的,看控制台,呀,找不到sql语句了:


可以说是用上缓存了。

第四步,等待一分钟再刷新。第三次查询,结果一致,看控制台:

熟悉的sql又回来了。为什么?因为我配置的缓存有效期是1分钟,见上文。

ok,缓存可以有了,有效期也有效了。那么,更新操作对缓存的影响呢?我们不能更新了还取缓存啊。

第五步,先save两个对象进去,我们再刷新页面(一分钟内哦),然后看控制台:



哇,万能的sql语句出来了,记录数也是不一样了。


感叹一下,人家还是很智能滴,这样,是不是非常好用啊,使用简单,缓存可用,非常简单。至于原理嘛……咱以后再分析。


0 0