mybatis最简单的二级缓存入门案例

1 全局配置需要在mybatis的核心配置文件开启二级缓存

       <settings>
         <!-- 二级缓存的开启-->
       <setting name="cacheEnabled" value="true"/>
       </settings>

2 在mapper映射的xml文件中配置如下

 <!--配置当前mapper配置-->
      <!-- LRU 最近最少使用的,一处最长时间不用的对象
           flushInterval 刷新间隔时间,没有配置的时候SQL执行的时候才会刷新缓存。
           size 引用数目,代表缓存最多可以存储多少对象,设置过大会溢出。
           readOnly 缓存数据只能读取 不能修改。默认为false
      -->
    <cache eviction="LRU" flushInterval="100000" readOnly="true" size="1024"/>
                                  <!--useCache单独给某个方法是否执行二级缓存 -->
     <select id="selectById" resultType="video" useCache="true">
         select * from video where id=#{video_id}
     </select>

3 编写测试类

package com.zxf;


import com.zxf.dao.VideoMapper;
import com.zxf.domain.Video;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

public class SqlSeesionCachDemo {
    public static void main(String[] args) throws IOException {
        String resource="conf/mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        try {

            SqlSession sqlSession1 = sqlSessionFactory.openSession();
            VideoMapper videoMapper1 = sqlSession1.getMapper(VideoMapper.class);
            Video video = videoMapper1.selectById(60);
            System.out.println(video.getTitle());
            sqlSession1.commit();  //这里必须有session的commit操作,否则不会执行二级缓存.


            SqlSession sqlSession2 = sqlSessionFactory.openSession();
            VideoMapper videoMapper2 = sqlSession2.getMapper(VideoMapper.class);
            Video video2 = videoMapper2.selectById(60);
            System.out.println(video2.getTitle());



        }catch (Exception e){
                e.printStackTrace();
        }


    }
}

4运行结果
在这里插入图片描述
同一个内容执行2次的时候,只执行了1条SQL语句。大家可以把设置的true编程false看看是否执行了2条SQL语句。在有就是如果session没有commit那么二级缓存也不会生效。
本案例只给出相关的部分代码。如果需要其他部分内容,可以给我留言。
大家在查找和学习中,遇到问题,可以在发布你的评论。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值