mybatis的二级缓存

缓存范围是跨SqlSession的,范围是mappernamespace,相同的namespace使用一个二级缓存结构。

需要进行参数配置让mybatis支持二级缓存。


1.在全局的配置文件SqlMapConfig.xml中加入,表示打开二级缓存开关

<setting name="cacheEnabled" value="true"/>

2. 还需要在 mapper.xml 中配置是否打开该 mapper 的二级缓存。

<mapper namespace="com.mo.mapper.userMapper">
	<!--开启二级缓存-->
	<cache />


二级缓存注意事项


1.实现序列号

注意:将查询结果的pojo对象进行序列化实现 java.io.Serializable接口

public class User implements Serializable {

2.如果清除缓存

如果执行提交操作需要清除二级缓存。

 如果想让statement执行后刷新缓存(清除缓存),在statement中设置flushCache="true" (默认值 true


3. 设置statement是否开启二级缓存

如果让某个statement启用二级缓存,设置useCache=true(默认值为true




二级缓存原理

如果二缓存开启,首先从二级缓存查询数据,如果二级缓存有则从二级缓存中获取数据,如果二级缓存没有,从一级缓存找是否有缓存数据,如果一级缓存没有,查询数据库。



二级缓存应用场景

 

1、针对复杂的查询或统计的功能,用户不要求每次都查询到最新信息,使用二级缓存,通过刷新间隔flushInterval设置刷新间隔时间,由mybatis自动刷新。

比如:实现用户分类统计sql,该查询非常耗费时间。

将用户分类统计sql查询结果使用二级缓存,同时设置刷新间隔时间:flushInterval(一般设置时间较长,比如30分钟,60分钟,24小时,根据需求而定)

 

 

2、针对信息变化频率高,需要显示最新的信息,使用二级缓存。

将信息查询的statement与信息的增、删、改定义在一个mapper.xml中,此mapper实现二级缓存,当执行增、删、修改时,由mybatis及时刷新缓存,满足用户从缓存查询到最新的数据。

比如:新闻列表显示前10条,该查询非常快,但并发大对数据也有压力。

将新闻列表查询前10条的sql进行二级缓存,这里不用刷新间隔时间,当执行新闻添加、

 

最佳的方案使用页面缓存


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值