MyBatis中如何合理的使用EhCache缓存框架

关于详细配置方面已经在另一篇文章中说过:MyBatis中使用Ehcache缓存框架,本篇主要涉及的是如何合理的使用缓存。

缓存简介

缓存的使用是一个很重要的过程,在项目查询配置中有很重要的作用,缓存主要分为一级缓存和二级缓存,一级缓存是默认开启的。

ehcache是一个分布式缓存框架。

我们系统为了提高系统并发、性能,一般会对系统进行分布式部署,所以需要使用分布缓存;如果只是使用单台服务器部署,就把数据缓存到单台服务器。

但是mybatis无法进行分布式缓存,因此需要整合第三方缓存框架:memcached、Redis、ehcache等。

缓存使用场景

对于访问多的查询请求且用户对查询结果实时性要求不高,此时可以用mybatis的二级缓存降低数据库的访问量,提高访问速度。

应用场景主要是: 比较少更新表数据

在mapper.xml中启用Ehcache

如上篇说说,需要在mapper.xml中加上:

    <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/>  
当为Select语句时
  • flushCache默认为false,表示任何时候该语句被调用,都不会去清空本地缓存和二级缓存。
  • useCache默认为true,表示将将本条语句结果进行二级缓存。
当为insert、update、delete语句时
  • flushCache默认为true,表示任何时候该语句被调用,都会去清空本地缓存和二级缓存。
  • useCache属性在该情况下没有。
配置场景
  • 一般来讲,Select时候会把flushCache一般会设成false,因为查询不会改变数据库的结果,不需要去更新缓存。useCache设成true,当然可能有些结果变化很频繁的查询可以设成false,因为这种做缓存效果不大。
  • 我们做insert、update、delete的时候,flushCache就要设成true,因为可能会改变数据库的记录导致缓存失效。同时useCache就不需要设成true,因为update或delete的结果对缓存没意义。
使用举例

在我们特定情况下,就不适用默认的属性,而是自己更改:

<!-- 判断用户名和密码 -->
    <select id="getUserInfo" parameterType="pd" resultType="pd" useCache="false">
        select * from SYS_USER 
        where 1=1
        <if test="USERNAME != null and PASSWORD != null">
            and USERNAME = #{USERNAME} and PASSWORD = #{PASSWORD}
        </if>
    </select>
<!-- 更新登录时间 -->
    <update id="updateLastLogin" parameterType="pd" flushCache="false">
        update SYS_USER set 
            LAST_LOGIN = #{LAST_LOGIN}
        where USER_ID = #{USER_ID}
    </update>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值