Memcache学习笔记二:Memcache做Mybatis的缓存

本文是关于Memcache作为Mybatis缓存的实战笔记,介绍了如何引入相关jar包,配置Mapper文件及memcache.properties,展示了如何利用Memcache提升数据库查询效率。
摘要由CSDN通过智能技术生成

Memcache学习笔记二:Memcache做Mybatis的缓存

标签(空格分隔): Memcache Mybatis


一、简介

    使用Memcache做Mybatis的缓存,Mybatis给我们提供了<cache>标签用于配置缓存。我们可以通过修改Mybatis的cache接口的实现类进行扩展自己的缓存。Memcache为我们做好了扩展,我们使用官方的jar即可进行缓存的替换。

二、导入相关jar包

    mybatis-memcached-1.0.0.jar     //Memcache和Mybatis整合jar
    spymemcached-2.10.6.jar         //Memcache连接jar

    Spring的相关jar、Mybatis相关jar、Mysql相关jar、log4j相关jar     //省略,不一一列举

三、简单示例

    场景分析:
        一个用户表和订单表,一个用户对应多个订单。

        通过查询用户,同时查询出用户对应的订单。两种实现方式:通过表连接和子查询,在这里使用子查询方式。

        对用户进行设置缓存<cache>,因为订单表示通过用户表的子查询查询的,Mybatis的机制会将订单表的查询数据同时进行缓存。对查询数据进行了缓存,如果对订单表的进行其他操作,如修改、删除、添加。就不能对通过用户表查询出来的订单数据缓存进行删除。这样就会导致一种情况数据能及时进行更新。
        Mybatis的缓存机制是对命名空间的独自管理。所以,我们应该采取另外一个标签<cache-ref>。
        需要注意:
            ①:在子查询的时候,Select标签需要使用因为查询在不同的Mapper文件中需要写全限定名。            
            ②:用户的Mapper文件中的<cache>标签的type可以有两种:MemcachedCache和LoggingMemcachedCache,前者没有日志功能,后者具有日志功能。【详细介绍参考Memcached官方文档】
        具体配置如下:
  1. IUserDAO的Mapper文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.motui.dao.IUserDAO">
        <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
        <!-- 定义mapper -->
        <resultMap type="User" id="UserMapper">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
            <!-- 关系属性 -->
            <collection property="orders" ofType="Order" column="id" select="com.motui.dao.IOrderDAO.queryOrderByUserId"/>
        </resultMap>
        <!-- 查询语句 -->
        <select id="queryAll" resultMap="UserMapper" >
            select id,name from t_user
        </select>
    </mapper>
  2. IOrderDAO的Mapper文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.motui.dao.IOrderDAO">
        <cache-ref namespace="com.motui.dao.IUserDAO"/>
        <!-- 定义mapper -->
        <resultMap type="Order" id="OrderMapper">
            <id column="id" property="id"/>
            <result column="name" property="name"/>
        </resultMap>
        <!-- 查询语句 -->
        <select id="queryOrderByUserId" resultMap="OrderMapper" parameterType="int" >
            select id,name from t_order where user_id=#{id}
        </select>
    </mapper>
  3. memcache.properties配置文件
    将该配置文件放到classPath下,如果没有改配置文件,默认使用默认设置,如下图的图表中的配置
    官方文档截图:

    这里写图片描述

    //配置Memcache服务器
    org.mybatis.caches.memcached.servers=192.168.0.167:11211 192.168.0.167:11212
    //缓存过期时长
    org.mybatis.caches.memcached.expiration=300
    //其他配置参见默认配置

    四、总结

        Memcache做Mybatis的缓存需要了解Mybatis的缓存特点和配置。还有就是对Memcache的使用和集群的搭建的使用。详细的配置可参看Mybatis的官方文档和Memcache的官方文档。都有详细的介绍和配置的示例。
    

源码链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值